Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 高效的ip查找_Python_Networking_Ip_Lookup - Fatal编程技术网

Python 高效的ip查找

Python 高效的ip查找,python,networking,ip,lookup,Python,Networking,Ip,Lookup,我有一个文件f1,其中包含42000000个ip地址的列表。 我还有另一个文件f2,其中包含ipranges及其关联所有者的字典,如: Regional Physicians Neuroscience,[('66.110.238.100', '66.110.238.100')] Coast Institute of Technology,[('41.89.132.0', '41.89.132.255')] House Of Flowers,[('69.15.170.220', '69.15.17

我有一个文件f1,其中包含42000000个ip地址的列表。 我还有另一个文件f2,其中包含ipranges及其关联所有者的字典,如:

Regional Physicians Neuroscience,[('66.110.238.100', '66.110.238.100')]
Coast Institute of Technology,[('41.89.132.0', '41.89.132.255')]
House Of Flowers,[('69.15.170.220', '69.15.170.223'), ('108.178.223.20', '108.178.223.23')]
现在我想知道f1中每个ip找到其相关范围和所有者的最有效方法是什么。例如:

ip1, House Of Flowers , ('69.15.170.220', '69.15.170.223')

在这方面有人能帮我吗?

我们假设ip范围不能重叠;因此,如果按基址升序对它们进行排序,则可以使用
bisect.bisect\u left
索引到数组中。然后如果
array[index]。第一个\u地址必须是非pythonic的一次。。。
如果可能拥有者的总数很小(少于255个),但范围的数量很大(数百个),您可以将每个IP转换为它所表示的四字节整数,然后使用它来索引为一个庞大的字节数组

找到的字节值是所有者编号,255表示无人

如果您首先测试用户实际需要的最小-最大范围,则所需的阵列最大为4 GB,并且要小得多