添加了一个方法4,同时发现我的电脑上第三种方法要快一些
D:/home/work/python/files>countLines.py
linecount_1 49238
linecount_2 49238
linecount_3 49238
linecount_4 49238
linecount_1: 0.18
linecount_2: 0.16
linecount_3: 0.09
linecount_4: 0.16
D:/home/work/python/files>countLines.py
linecount_1 379813
linecount_2 379813
linecount_3 379813
linecount_4 379813
linecount_1: 1.61
linecount_2: 1.36
linecount_3: 0.85
linecount_4: 1.33
# -*- coding: utf-8 -*-
import time
def timeo(fun, n=10):
start = time.clock()
for i in range(n): fun()
stend = time.clock()
thetime = stend-start
return fun.__name__, thetime #返回函数名称,函数运行10次总时间的 元组
import os
fname="YourFileName" #稍微改了一下,添加了一个文件名变量
def linecount_wc():
return int(os.popen('wc -l nuc').read().split()[0]) #使用外部系统程序 wc -l
def linecount_1( ): #使用方法1
return len(open(fname).readlines())
def linecount_2(): #使用方法2
count = 0
for line in open(fname).xreadlines(): count += 1
return count
def linecount_3(): #使用方法3
count = 0
thefile = open(fname)
while 1:
buffer = thefile.read(65536)
if not buffer: break
count += buffer.count('/n')
return count
def linecount_4(): #添加的方法4
count=0
for line in open(fname):
#if(line!='/n'): count+=1
count+=1
return count
for f in linecount_1, linecount_2, linecount_3,linecount_4:
print f.__name__, f()
for f in linecount_1, linecount_2, linecount_3,linecount_4:
print "%s: %.2f"%timeo(f)
转自:【浸在苏打水里的玩偶 】http://hi.baidu.com/javalang/blog/item/b2f398efa62acfeccf1b3eb6.html