文件 压前 160m 压有 32m , 50万条数据
需求遍历 : 求 行数
硬盘的 i/o 一般在 60~100m 之间 。
f = gzip.open('1010211955.gz', 'rb')
》耗时 6~7秒
ii=0
for row in f: ii+=1
print ii
》耗时 5~6 秒
ii=0
while 1:
lines = f.readlines(100000)
if not lines:
break
for line in lines:
ii+=1
pass # do something
print ii
》耗时 1.8 m
ii = 0
br = ''
try:
while True:
rb = f.read(4096*4)
if not rb:
break
#n = rb.count('\n')
rbs = rb.split('\n')
orow = br+rbs[0]
ii += 1
for row in rbs[1:-1] :
ii += 1
finally:
f.close( )
print ii
注意 : 使用最后一种方法,和 没解压的 cat 文件 |wc -l 的耗时是一样的 ,但是使用 gz ,网络传送,和转硬盘的 压力都转到 cpu 上
阅读(925) | 评论(0) | 转发(0) |