只是用一个800万行文件(正常运行时间行)做了一个快速测试,以运行文件的长度并将文件分成两半。基本上,一次通过可以获得行数,第二次通过则可以进行拆分写入。在
在我的系统中,执行第一次通过运行所需的时间大约为2-3秒。要完成对拆分文件的运行和写入,所用的总时间不到21秒。在
没有在OP的post中实现lamba函数。使用的代码如下:#!/usr/bin/env python
import sys
import math
infile = open("input","r")
linecount=0
for line in infile:
linecount=linecount+1
splitpoint=linecount/2
infile.close()
infile = open("input","r")
outfile1 = open("output1","w")
outfile2 = open("output2","w")
print linecount , splitpoint
linecount=0
for line in infile:
linecount=linecount+1
if ( linecount <= splitpoint ):
outfile1.write(line)
else:
outfile2.write(line)
infile.close()
outfile1.close()
outfile2.close()
不,它不会赢得任何性能测试或代码优雅测试。:)但是除了性能瓶颈之外,lambda函数会导致文件在内存中缓存并导致交换问题,或者文件中的行非常长,我不明白为什么要花30分钟来读取/拆分800万行文件。在
编辑:
我的环境:macosx,存储是一个FW800连接的硬盘。文件是新创建的,以避免文件系统缓存的好处。在