#
現在考慮有一個 jsonline 格式的文件 file.txt 大小約為 10K,之前處理文件的
代碼如下所示:
1. def get_lines(): 2. l = [] 3. with open(‘file.txt’,‘rb’) as f: 4. for eachline in f: 5. l.append(eachline) 6. return l 7. if __name__ == ‘__main__’: 8. for e in get_lines(): 9. process(e) #處理每一行數據
#
現在要處理一個大小為 10G 的文件,但是內存只有 4G,如果在只修改 get_lines 函數而其他代
碼保持不變的情況下,應該如何實現?需要考慮的問題都有哪些?
1. def get_lines(): 2. l = [] 3. with open(‘file.txt’,’rb’) as f: 4. data = f.readlines(60000) 5. l.append(data) 6. yield l
說明 : 內存只有 4G 無法一次性讀入 10G 的文件,需要分批讀入。分批讀入數據要記錄每次讀入數據的位
置。分批每次讀入數據的大小,太小就會在讀取操作上花費過多時間。