#!/usr/bin/python3.2
from collections import deque, defaultdict
host = defaultdict(deque)
with open('/var/logs/access.log', 'r') as f:
for line in f:
ip, d = line.split(r':%%:', 1)
host[ip].append(d)
time ./speed_test.py
Traceback (most recent call last):
File "./speed_test.py", line 6, in
for line in f:
MemoryError
Как я понял, в питоне операция слияния строки в более длинную очень дорогая, настолько дорогая, что от нее нужно отказаться. И непонятно, почему память переполняется в итоге, а в перле все ок - 20% (т.к. 4 гб RAM).
Но, использование списка тоже не решает проблемы.