Python 文本文件 read/write 优化

Python text file read/write optimization

我一直在处理这个文件 i/o 并在浏览网站时取得了一些进展,我想知道还有哪些其他方法可以优化它。我正在解析一个 10GB/30MM 行的测试输入文件,并将导致 aprog 1.4GB 干净文件的字段写入输出文件。最初,运行 这个过程需要 40m,我已将其减少到 30m 左右。在 python 中,任何人都有任何其他想法来减少这种情况。从长远来看,我将寻求用 C++ 编写它——我只需要先学习这门语言。提前致谢。

with open(fdir+"input.txt",'rb',(50*(1024*1024))) as r:
w=open(fdir+"output0.txt",'wb',50*(1024*1024)))
for i,l in enumerate(r):
    if l[42:44]=='25':
        # takes fixed width line into csv line of only a few cols
        wbun.append(','.join([
                                l[7:15],
                                l[26:35],
                                l[44:52],
                                l[53:57],
                                format(int(l[76:89])/100.0,'.02f'),
                                l[89:90],
                                format(int(l[90:103])/100.0,'.02f'),
                                l[193:201],
                                l[271:278]+'\n'
                            ]))
    # write about every 5MM lines
    if len(wbun)==wsize:
        w.writelines(wbun)
        wbun=[]
        print "i_count:",i
    # splits about every 4GB
    if (i+1)%fsplit==0:
        w.close()
        w=open(fdir+"output%d.txt"%(i/fsplit+1),'wb',50*(1024*1024)))
w.writelines(wbun)
w.close()

尝试 运行在 Pypy (https://pypy.org) 中使用它,它将 运行 无需更改您的代码,而且速度可能更快。

此外,C++ 可能有点矫枉过正,尤其是在您还不知道它的情况下。考虑改为学习围棋或 D。