Уведомления

Группа в Telegram: @pythonsu

#1 Май 18, 2013 21:39:25

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена ipaddress

В моей программе используется модуль 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

Подскажите чем можно заменить данный модуль или может есть простое решение. Очень не хочется изобретать велосипед…



—-
memento mori

Офлайн

#2 Май 20, 2013 00:45:12

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена ipaddress

Решил добавлением списка с уже определенными IP. В начале смотрим список если нет использовать ipaddress и добавить IP в список. При таком подходе время работы 194 секунды.



—-
memento mori

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version