我有一个100GB的文本文件,大约有50K行,不是相同的长度.
它太大而无法放入内存,因此目前我逐行阅读.这也需要很长时间.有更聪明的方法来读取文件吗?例如,一次读几行?
像这样的文件行的基本迭代:
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)
这并没有加快的实际读数,但可能会提高处理性能的线条.
| 归档时间: |
|
| 查看次数: |
2639 次 |
| 最近记录: |