跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

处理10G文件只需4G内存,Python代码如何实现?

文章导读

作为资深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,

相关文章