Comment traiter des fichiers JSON massifs sans manquer de mémoire ?

Mary-Kate Olsen
Libérer: 2024-10-30 07:26:27
original
841 Les gens l'ont consulté

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

Gérer des fichiers JSON massifs sans surcharge de mémoire

Le chargement de fichiers JSON volumineux en mémoire peut souvent entraîner un épuisement de la mémoire. Considérez le scénario suivant :

<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>
Copier après la connexion

Ce code tente de charger l'intégralité du contenu d'un fichier JSON, ce qui peut conduire à une MemoryError. En effet, json.load() délègue à json.loads(f.read()), qui lit d'abord l'intégralité du fichier en mémoire.

Solution : adoptez la puissance du streaming

Pour éviter les contraintes de mémoire, envisagez d'aborder le traitement JSON comme un flux plutôt que comme un bloc complet. Cela implique de lire uniquement des parties du fichier, de les traiter et de continuer de manière itérative jusqu'à ce que l'intégralité du fichier soit traitée.

Une option fortement recommandée est ijson, un module conçu pour diffuser des données JSON. Avec son aide, vous pouvez travailler avec JSON sous forme de flux plutôt que de fichier statique, contournant ainsi efficacement les limitations de mémoire.

<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>
Copier après la connexion

Solutions alternatives

Deux autres alternatives remarquables :

  • json-streamer : Un autre analyseur JSON de streaming avec des options personnalisables.
  • bigjson : Un package spécialisé pour gérer également les fichiers JSON grand pour la mémoire. Il fournit une interface basée sur un curseur pour parcourir les données.

En utilisant ces techniques, vous pouvez traiter efficacement même les fichiers JSON les plus colossaux sans rencontrer d'épuisement de la mémoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!