文章导读
作为资深Web开发技术专家,我经常遇到处理大文件的问题。今天,我们就来探讨如何用Python代码处理10G文件,同时只占用4G内存。这篇文章将深入探讨这个问题,并提供解决方案。正文部分
1. 有一个jsonline格式的文件file.txt大小约为10K
def get_lines():
\twith open('file.txt','rb') as f:
\t\treturn f.readlines()
if __name__ == '__main__':
\tfor e in get_lines():
\t\tprocess(e) # 处理每一行数据
现在要处理一个大小为10G的文件,但是内存只有4G,如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现?需要考虑的问题都有那些?
def get_lines():
\twith open('file.txt','rb') as f:
\t\tfor i in f:
\t\t\tyield i
个人认为:还是设置下每次返回的行数较好,否则读取次数太多。
def get_lines():
\tl = []
\twith open('file.txt','rb') as f:
\t\tdata = f.readlines(60000)
\tl.append(data)
\tyield l
Pandaaaa906提供的方法
from mmap import mmap
def get_lines(fp):
\twith open(fp,
