Найти - Пользователи
Полная версия: Замена ipaddress
Начало » Python для новичков » Замена ipaddress
1
k0st1an
В моей программе используется модуль ipaddress, который появился в 3.3. Задача программы обрабатывать текстовые файлы такого вида:

1366537502,192.168.42.1,1,41,3922654509,3922654509,192.168.40.32,87.240.138.101,2,3,52496,80,6,16

Строка потом в виде списка. Таких файлов 823, общее количество строк в них около 13млн. Пока программа ничего не делает, кроме как открывает файл и читает каждую строчку. Уходит на это 146 секунд. Но вот я добавил модуль ipaddress. Его задача просто выдать результат и никаких других действий. И вот обработака уже длится 1354 секунды. Это на 927% дольше…. Это пиииии…

from ipaddress import ip_address, ip_network
def __check_local_ip(self, src, dst, local_net):
        try:
            if ip_address(src) in ip_network(local_net):
                return 'out', src
            if ip_address(dst) in ip_network(local_net):
                return 'in', dst
            raise NotLocalIP
        except ValueError:
            return None, None
        except NotLocalIP:
            return None, None

Подскажите чем можно заменить данный модуль или может есть простое решение. Очень не хочется изобретать велосипед…
k0st1an
Решил добавлением списка с уже определенными IP. В начале смотрим список если нет использовать ipaddress и добавить IP в список. При таком подходе время работы 194 секунды.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB