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

时间:2015-05-20 08:36:03

标签: python

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

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

1 个答案:

答案 0 :(得分:5)

基于文件行的基本迭代:

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

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

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

import multiprocessing

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

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

加快了实际读数,但可能提高了处理线路的性能。