我有一个100GB的文本文件,大约有50K行,但长度不一样。
它太大而无法放入内存,因此目前我逐行阅读。这也需要很长时间。有更聪明的方法来读取文件吗?例如,一次读几行?
答案 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)
这不加快了实际读数,但可能提高了处理线路的性能。