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 的文件,需要分批读入。分批读入数据要记录每次读入数据的位 置。分批每次读入数据的大小,太小就会在读取操作上花费过多时间。