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>
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>
Solutions alternatives
Deux autres alternatives remarquables :
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!