Bagaimana Memproses Fail JSON Besar-besaran Tanpa Kehabisan Memori?

Mary-Kate Olsen
Lepaskan: 2024-10-30 07:26:27
asal
841 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!