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

Best way to read a very large file in Python

本问题已经有最佳答案,请猛点这里访问。

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

它太大,内存不足,所以我现在一行一行地读。这也需要很长时间。有没有更聪明的方法来读取文件?例如,一次读几行?


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

1
2
3
with open(filename) as f:
    for line in f:
        do_stuff(line)

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

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

1
2
3
4
5
6
import multiprocessing

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

with open(filename) as f:
    pool.map(do_stuff, f)

这不会加快实际的读取速度,但可能会提高处理行的性能。