Tips
今日の開発Tips(2025-08-09)
大規模なJSONデータを扱う際、メモリ消費を抑えつつ効率的に処理するには、`json`モジュールの`load()`ではなく、`iter(json.load(...))`を使うと効果的です。これにより、一度に全データをメモリに読み込むことなく、要素を一つずつ処理できます。特に巨大なファイルやメモリ制限のある環境では、この手法がメモリ効率の改善に繋がります。
効率的なJSONデータ処理:イテレータによるメモリ節約
Pythonで巨大なJSONファイルを処理する場合、json.load()は一度に全てのデータをメモリに読み込むため、メモリ不足が発生する可能性があります。これを回避するために、json.load()をイテレータと組み合わせて使用することで、JSONデータを要素ごとに処理できます。
import json
def process_large_json(filepath):
with open(filepath, 'r') as f:
for item in iter(json.load(f)):
# 各要素itemに対する処理
process_item(item)
def process_item(item):
# 各要素の処理内容
print(item['key']) # 例:keyというキーを持つ要素を出力
# 使用例
process_large_json('large_file.json')
iter(json.load(f))を使うことで、JSONファイル全体を一度にメモリに読み込むことなく、要素を一つずつ処理できるので、メモリ使用量を大幅に削減できます。 処理対象のJSONファイルが非常に大きい場合や、メモリ容量が限られている環境では、この方法を採用することを強く推奨します。 ただし、JSONデータが不正なフォーマットの場合にはエラーが発生するため、例外処理を適切に行う必要があります。