2019-07-30 | 7662

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

答案:
之前处理文件的 代码如下所示
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

发表评论

    评价:
    Rich Text Editor
    最新评论