2019-07-30 |

现在考虑有一个 jsonline 格式的文件 file.txt 大小约

A
B
C
D
答案:
之前处理文件的 代码如下所示
 def get_lines():
 	l = []
 	with open('file.txt','rb') as f:
 		for eachline in f:
 			l.append(eachline)
 	return l
 if __name__ == '__main__':
 	for e in get_lines():
 		process(e) #处理每一行数据

现在要处理一个大小为 10G 的文件,但是内存只有 4G,如果在只修改 get_lines 函数而其他代 码保持不变的情况下,应该如何实现?需要考虑的问题都有哪些?

 def get_lines():
 	l = []
 	with open(‘file.txt’,’rb’) as f:
 		data = f.readlines(60000)
 	l.append(data)
 	yield l

要考虑到的问题有:

内存只有 4G 无法一次性读入 10G 的文件,需要分批读入。分批读入数据要记录每次读入数据的位 置。分批每次读入数据的大小,太小就会在读取操作上花费过多时间。

解释:
剑指offer

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论