Chinaunix首页 | 论坛 | 博客
  • 博客访问: 650938
  • 博文数量: 149
  • 博客积分: 3901
  • 博客等级: 中校
  • 技术积分: 1558
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-16 14:33
文章分类

全部博文(149)

文章存档

2014年(2)

2013年(10)

2012年(32)

2011年(21)

2010年(84)

分类: LINUX

2010-10-22 18:10:09




文件 压前 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 上 
阅读(999) | 评论(0) | 转发(1) |
0

上一篇:硬盘 io 查看

下一篇:hive 学习(转)

给主人留下些什么吧!~~