File Iterator
Saturday, January 2nd, 2010《Learning Python》中介绍了Iterator Protocol,很多Built-in对象都实现了它。对于语言内部的实现或者其他类型使用Iterator的效率没有测试,只是简单的测试了File Iterator。先是准备了一个330M的文件,然后用推荐的写法和传统的readlines写法读入文件的内容。
传统的写法:
def read_files_readlines(): print str(datetime.datetime.now()) data = '' f = open('test.data', 'r') for line in f.readlines(): data += line print str(datetime.datetime.now())
推荐的写法:
def read_files_iterators(): data = '' print str(datetime.datetime.now()) for line in open('test.data'): data += line print str(datetime.datetime.now())
测试的结果使用Iterator在速度上的优势并不明显,只是比readlines函数快了几秒;但是在内存方面Iterator全面胜出,内存最高使用了200M,readlines的方法占用了1000M左右。推荐在Python的代码中使用Iterator的写法,尤其是在web方面的应用。