在Python中读取非常大的文件的最佳方法

Roy*_*Roy 2 python

我有一个100GB的文本文件,大约有50K行,不是相同的长度.

它太大而无法放入内存,因此目前我逐行阅读.这也需要很长时间.有更聪明的方法来读取文件吗?例如,一次读几行?

Con*_*ius 5

像这样的文件行的基本迭代:

with open(filename) as f:
    for line in f:
        do_stuff(line)
Run Code Online (Sandbox Code Playgroud)

这实际上只将当前行读入内存而不是更多.如果你想对缓冲区大小进行精细控制,我建议你使用io.open(例如,当你的行长度相同时,这可能很有用).

如果对数据的操作实际上不是IO绑定但是CPU绑定,则使用多处理可能很有用:

import multiprocessing

pool = multiprocessing.Pool(8)  # play around for performance

with open(filename) as f:
    pool.map(do_stuff, f)
Run Code Online (Sandbox Code Playgroud)

这并没有加快的实际读数,但可能会提高处理性能的线条.

  • 是的,这就是为什么我在答案中提到它. (2认同)