天天看點

小記憶體讀取大資料

問題: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

繼續閱讀