2

25000 行を含む 15 GB のテキスト ファイルがあります。dict1 = {'':int}, dict2 = {'':dict1} という形式の Python でマルチレベルの辞書を作成しています。

プログラムでこの dict2 全体を複数回 (for ループで約 1000 回) 使用する必要があります。誰か良い方法を教えてください。

同じタイプの情報がファイルに保存されます (25000 画像の異なる RGB 値のカウント。1 行あたり 1 画像)。例: ファイルの 1 行は次のようになります。234,221,231-40; 112,13,19-28; 画像 2 : 5,25,25-30; 34,15,61-20; 102,103,109-228; 等々。

4

2 に答える 2

2

これを行う最善の方法は、チャンクを使用することです。

def read_in_chunks(file_object, chunk_size=1024):
    """Lazy function (generator) to read a file piece by piece.
    Default chunk size: 1k."""
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data

f = open('really_big_file.dat')
for piece in read_in_chunks(f):
    process_data(piece)

大きなファイルの処理を開始するときは、map-reduce イディオムに移行すると、完全なデータ セットをメモリに取り込むことなく、個別のチャンク ファイルを個別に処理できるため、役立つ場合があります。

于 2013-01-26T17:43:12.510 に答える
1

Python では、ファイル オブジェクトを反復子として使用すると、ファイル全体をメモリ内で開かなくても、ファイルを 1 行ずつ読み取ることができます。

for line in open("huge_file.txt"):
    do_something_with(line)
于 2013-01-26T17:34:30.600 に答える