ホームページ > バックエンド開発 > Python チュートリアル > 遅延評価を使用して Python で大きなファイルを効率的に読み取り、処理するにはどうすればよいですか?

遅延評価を使用して Python で大きなファイルを効率的に読み取り、処理するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-15 03:38:12
オリジナル
363 人が閲覧しました

How Can I Efficiently Read and Process Large Files in Python Using Lazy Evaluation?

Python で大きなファイルを効率的に読み取るための遅延メソッド

Python で大きなファイルを読み取ると、計算量が多くなり、システムの速度が低下する可能性があります。この問題に対処するには、ファイルを管理可能なチャンクに分けて読み取り、処理する遅延メソッドが推奨されます。遅延メソッドを実装するためのいくつかのオプションを次に示します。

遅延評価に Yield を使用する:

yield キーワードを使用して、オンデマンドで要素を返す遅延関数を作成できます。 。次のコードは、yield を使用してファイルをチャンクで読み取る方法を示しています:

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
ログイン後にコピー

この関数を使用するには、生成されたチャンクを反復処理して処理できます:

with open('really_big_file.dat') as f:
    for piece in read_in_chunks(f):
        process_data(piece)
ログイン後にコピー

Iter とヘルパー関数の使用:

または、次のこともできます。 iter 関数とヘルパー関数を組み合わせてジェネレーターを作成します。

f = open('really_big_file.dat')
def read1k():
    return f.read(1024)

for piece in iter(read1k, ''):
    process_data(piece)
ログイン後にコピー

このアプローチは前のアプローチと似ていますが、別の関数を使用してチャンクを生成します。

行ベースのファイルの読み取り:

ファイルにデータ行が含まれている場合は、ファイル オブジェクト自体:

for line in open('really_big_file.dat'):
    process_data(line)
ログイン後にコピー

このメソッドは、行が独立しており、部分ごとに処理できるファイルに適しています。

遅延評価手法を使用することで、効率的に読み取り、処理できます。システム リソースを圧迫することなく、大きなファイルを保存できます。これらの方法を使用すると、メモリの使用量と処理時間を制御できるため、最大のファイルでもスムーズに処理できるようになります。

以上が遅延評価を使用して Python で大きなファイルを効率的に読み取り、処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート