Umgang mit riesigen JSON-Dateien ohne Speicherüberlastung
Das Laden umfangreicher JSON-Dateien in den Speicher kann oft zu einer Speichererschöpfung führen. Stellen Sie sich das folgende Szenario vor:
<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>
Dieser Code versucht, den gesamten Inhalt einer JSON-Datei zu laden, was zu einem MemoryError führen kann. Dies liegt daran, dass json.load() an json.loads(f.read()) delegiert, das zuerst die gesamte Datei in den Speicher liest.
Lösung: Nutzen Sie die Macht des Streaming
Um Speicherbeschränkungen zu vermeiden, sollten Sie die JSON-Verarbeitung als Stream statt als vollständigen Block betrachten. Dabei werden nur Teile der Datei gelesen, verarbeitet und iterativ fortgesetzt, bis die gesamte Datei verarbeitet ist.
Eine sehr empfehlenswerte Option ist ijson, ein Modul, das auf das Streaming von JSON-Daten zugeschnitten ist. Mit seiner Hilfe können Sie mit JSON als Stream statt als statische Datei arbeiten und so Speicherbeschränkungen effektiv umgehen.
<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>
Alternative Lösungen
Zwei weitere bemerkenswerte Alternativen :
Durch den Einsatz dieser Techniken können Sie selbst die umfangreichsten JSON-Dateien effizient verarbeiten, ohne dass der Speicher erschöpft wird.
Das obige ist der detaillierte Inhalt vonWie verarbeitet man riesige JSON-Dateien, ohne dass der Speicher knapp wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!