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データが不正なフォーマットの場合にはエラーが発生するため、例外処理を適切に行う必要があります。