Heim >Backend-Entwicklung >Python-Tutorial >Wie verarbeitet man riesige JSON-Dateien, ohne dass der Speicher knapp wird?

Wie verarbeitet man riesige JSON-Dateien, ohne dass der Speicher knapp wird?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 07:26:27922Durchsuche

How to Process Massive JSON Files Without Running Out of Memory?

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 :

  • json-streamer: Ein weiterer Streaming-JSON-Parser mit anpassbaren Optionen.
  • bigjson: Ein spezielles Paket auch für die Verarbeitung von JSON-Dateien groß für die Erinnerung. Es bietet eine Cursor-basierte Schnittstelle zum Navigieren in den Daten.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn