問題:4G 記憶體怎麼讀取一個 5G 的資料?
方法一:
可以通過生成器,分多次讀取,每次讀取數量相對少的資料(比如 500MB)進行處理,處理結束後再讀取後面的 500MB 的資料。
def get_lines_1():
my_list = []
with open("file.txt", "r") as f:
for eachline in f:
my_list.append(eachline)
return my_list
def get_lines_2():
with open("file.txt", "r") as f:
while True:
data = f.readlines(10)
if not data:
break
yield data
if __name__ == '__main__':
for e in get_lines_1():
print(e) # 處理每一行資料
print("*" * 50)
for e in get_lines_2():
print(e)
方法二:
可以通過 linux 指令 split 切割成小檔案,然後再對資料進行處理,此方法效率比較高。可以按照行數切割,可以按照檔案大小切割。
詳細過程請點選 ☞ https://blog.csdn.net/apollo_miracle/article/details/84143921