メモリ過負荷なしで大量の JSON ファイルを処理する
大量の JSON ファイルをメモリにロードすると、メモリが枯渇することがよくあります。次のシナリオを考えてみましょう:
<code class="python">from datetime import datetime import json print(datetime.now()) f = open('file.json', 'r') json.load(f) f.close() print(datetime.now())</code>
このコードは、JSON ファイルの内容全体をロードしようとします。これにより、MemoryError が発生する可能性があります。これは、json.load() が json.loads(f.read()) に委任し、最初にファイル全体をメモリに読み取るためです。
解決策: ストリーミングの力を活用する
メモリの制約を回避するには、完全なブロックではなくストリームとして JSON 処理を行うことを検討してください。これには、ファイルの一部のみを読み取り、それらを処理し、ファイル全体が処理されるまで繰り返し続行することが含まれます。
強く推奨されるオプションの 1 つは、JSON データのストリーミング用に調整されたモジュールである ijson です。これを利用すると、JSON を静的ファイルではなくストリームとして操作でき、メモリ制限を効果的に回避できます。
<code class="python"># With ijson import ijson with open('file.json', 'r') as f: for event, value in ijson.parse(f): # Process the event and value</code>
代替ソリューション
その他の 2 つの注目すべき代替案:
これらの手法を利用すると、メモリを枯渇させることなく、最も巨大な JSON ファイルでも効率的に処理できます。
以上がメモリ不足にならずに大量の JSON ファイルを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。