Тема: Обработка лог файла кэширующего прокси-сервера squid и получение на выходе статистической информации.
Задача: Студент подготавливает файл томских сетей в виде ip/mask. На выходе выдать два файла, трафик по томским и внешним сетям.
Сам лог файл весит 340 Мб с копейками; в нём порядка 2.600.000 строк.
Мой скрипт:
import sys
sys.path.append('/home/adv/gks/lab 5/iplib.py')
import iplib
f = open("/home/adv/gks/laba 5/netsplain", 'r')
ip_mask = []
for line in f:
ip_mask.append(line.strip())
f.close()
internal, external = {}, {}
f = open("/home/adv/gks/laba 5/squid", 'r')
for line in f:
parts = line.strip().split(' ')
time, byte, ip = parts[0], parts[4], parts[7]
if iplib.detect(ip) == 1:
a, b = 0, 0
for element in ip_mask:
cidr = iplib.CIDR(element)
if cidr.is_valid_ip(ip):
a += 1
else:
b += 1
if a == 1:
internal[ip] = internal.get(ip, 0) + int(byte)
else:
external[ip] = external.get(ip, 0) + int(byte)
f.close()
f = open("/home/adv/gks/laba 5/internal", 'w')
for key, value in sorted(internal.items(),
key = lambda x: x[1],
reverse = True):
f.write(str(key).rjust(15) + " " + str(value) + "\n")
f.close()
f = open("/home/adv/gks/laba 5/external", 'w')
for key, value in sorted(external.items(),
key = lambda x: x[1],
reverse = True):
f.write(str(key).rjust(15) + " " + str(value) + "\n")
f.close()
И есть ли где-нибудь описание затрат времени на работу той или иной функции?
Спасибо =)