Tips
今日の開発Tips(2025-07-04)
Pythonで大量のデータを処理する際に、メモリ消費を削減するために、ジェネレータを使用しましょう。ジェネレータは、一度にすべてのデータをメモリに読み込むのではなく、必要な時に必要なデータだけを生成するため、メモリ効率が大幅に向上します。特に、巨大なファイルの処理や、メモリに収まらないサイズのデータセットを扱う際に有効です。
Python ジェネレータによるメモリ効率化
リスト内包表記や通常のループで大量のデータを処理すると、一度に全データがメモリに読み込まれ、メモリ不足エラーが発生する可能性があります。ジェネレータを使うことで、データを逐次的に処理でき、メモリ使用量を大幅に削減できます。
# メモリ消費の多い方法 (リスト内包表記)
large_data = range(10000000) # 巨大なデータ
squared_data = [x**2 for x in large_data] # メモリに一度に読み込む
# メモリ効率の良い方法 (ジェネレータ)
def squared_generator(data):
for x in data:
yield x**2
large_data = range(10000000)
squared_generator_data = squared_generator(large_data)
# 必要な時にだけ値を生成し消費する
for value in squared_generator_data:
# value を処理する
pass
注意点:
ジェネレータはイテレータなので、一度生成された値は再利用できません。 必要なデータに繰り返しアクセスする場合は、リストなどに格納する必要があります。
おすすめポイント:
大規模データ処理において、メモリ不足エラーを回避し、プログラムの安定性を向上させるために、ジェネレータの活用を検討しましょう。 処理速度が速くなるわけではないことに注意し、必要に応じて適切なデータ構造を選択することが重要です。