Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Memproses Fail JSON Besar-besaran Tanpa Kehabisan Memori?

Bagaimana Memproses Fail JSON Besar-besaran Tanpa Kehabisan Memori?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-30 07:26:27840semak imbas

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

Mengendalikan Fail JSON Besar-besaran tanpa Beban Memori

Memuatkan fail JSON yang besar ke dalam memori selalunya boleh mengakibatkan keletihan memori. Pertimbangkan senario berikut:

<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>

Kod ini cuba memuatkan keseluruhan kandungan fail JSON, yang boleh membawa kepada MemoryError. Ini kerana json.load() mewakilkan kepada json.loads(f.read()), yang membaca keseluruhan fail ke dalam memori terlebih dahulu.

Penyelesaian: Hayati Kuasa Penstriman

Untuk mengelakkan kekangan memori, pertimbangkan untuk mendekati pemprosesan JSON sebagai strim dan bukannya blok lengkap. Ini melibatkan membaca bahagian fail sahaja, memprosesnya dan meneruskan secara berulang sehingga keseluruhan fail dikendalikan.

Satu pilihan yang sangat disyorkan ialah ijson, modul yang disesuaikan untuk penstriman data JSON. Dengan bantuannya, anda boleh bekerja dengan JSON sebagai strim dan bukannya fail statik, dengan berkesan mengelakkan pengehadan memori.

<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>

Penyelesaian Alternatif

Dua alternatif lain yang patut diberi perhatian :

  • json-streamer: Satu lagi penghurai JSON penstriman dengan pilihan yang boleh disesuaikan.
  • bigjson: Pakej khusus untuk mengendalikan fail JSON juga besar untuk ingatan. Ia menyediakan antara muka berasaskan kursor untuk menavigasi data.

Dengan menggunakan teknik ini, anda boleh memproses dengan cekap walaupun fail JSON yang paling besar tanpa mengalami keletihan memori.

Atas ialah kandungan terperinci Bagaimana Memproses Fail JSON Besar-besaran Tanpa Kehabisan Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn