Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh memuatkan fail JSON yang besar dengan cekap tanpa menggunakan memori yang berlebihan?

Bagaimanakah saya boleh memuatkan fail JSON yang besar dengan cekap tanpa menggunakan memori yang berlebihan?

Barbara Streisand
Barbara Streisandasal
2024-10-27 00:53:02959semak imbas

How can I load large JSON files efficiently without consuming excessive memory?

Memahami Pemuatan Fail JSON Cekap Memori

Memuatkan fail JSON yang besar dengan kekangan memori boleh menimbulkan cabaran. Jika menggunakan fungsi json.load() standard untuk membaca keseluruhan fail sekali gus, penggunaan memori boleh meningkat. Nasib baik, terdapat alternatif yang membolehkan pemuatan separa fail.

Memperkenalkan ijson: Penghurai SAX untuk JSON

ijson, serupa dengan SAX untuk XML, membolehkan pengguna menguraikan secara berulang fail JSON. Ini memberikan analogi kepada lelaran baris demi baris dalam fail teks, menangani kebimbangan memori.

Menggunakan ijson untuk Memuatkan Bahagian Fail JSON

Untuk menggunakan ijson untuk memuatkan fail JSON separa, ikut langkah berikut:

  1. Import pustaka ijson.
  2. Lelaran pada fail menggunakan ijson.parse(open(json_file_name)).
  3. Untuk setiap awalan, jenis dan nilai, tentukan tindakan yang diingini.

Kod Contoh

Berikut ialah contoh penggunaan ijson untuk menghuraikan fail JSON :

<code class="python">import ijson
for prefix, the_type, value in ijson.parse(open(json_file_name)):
    print(prefix, the_type, value)</code>

Dalam kod ini, awalan mewakili indeks yang dipisahkan titik dalam pepohon JSON, the_type menunjukkan peristiwa seperti SAX dan nilai mengandungi nilai objek atau Tiada untuk jenis acara.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memuatkan fail JSON yang besar dengan cekap tanpa menggunakan memori yang berlebihan?. 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