kellyseeme123 发表于 2016-04-09 23:26

python2.7如何打开大文件

有一个2G的文件,我需要进行统计最长的那行,下面使用了列表解析和生成器,但是发现都占用了巨大的内存,两者占用的内存基本相同,那么有没有其他的方法来节省内存???
import time
start_time = time.time()
lo = max((len(line) for line in open('kel.log') ))#使用生成器
print lo
end_time = time.time()
print end_time-start_time

start_time = time.time()
lo = max() #使用列表解析
print lo
end_time = time.time()
print end_time-start_time

Hadron74 发表于 2016-04-11 09:43

本帖最后由 Hadron74 于 2016-04-11 11:34 编辑

测试了map/reduce,你可以试试。
map 返回list不好,可用imap
from itertools import imap
lo = reduce(max, imap(len,open('kel.log")))

lolizeppelin 发表于 2016-04-11 10:48

使用nmap一截一截的映射

map = mmap.mmap(f.fileno(), length=mmap_len, access = mmap.ACCESS_WRITE, offset=start_len)
页: [1]
查看完整版本: python2.7如何打开大文件