1. 程式人生 > >小記憶體讀取大資料

小記憶體讀取大資料

問題:4G 記憶體怎麼讀取一個 5G 的資料?

方法一:

可以通過生成器,分多次讀取,每次讀取數量相對少的資料(比如 500MB)進行處理,處理結束後再讀取後面的 500MB 的資料。

def get_lines_1():
    l = []
    with open("3.1_file.txt", "r") as f:
        for eachline in f:
            l.append(eachline)
    return l


def get_lines_2():
    with open("3.1_file.txt", "r") as f:
        data = f.readline()
        yield data
    return data


if __name__ == '__main__':
    for e in get_lines_1():
        print(e)  # 處理每一行資料
    print("*" * 50)
    print(get_lines_2())
    print("*" * 50)
    for e in get_lines_2():
        print(e)  # 處理每一行資料
    print("over")

方法二:

可以通過 linux 命令 split 切割成小檔案,然後再對資料進行處理,此方法效率比較高。可以按照行 數切割,可以按照檔案大小切割。

https://blog.csdn.net/apollo_miracle/article/details/84143921