Quando carico il file in json, i picchi di utilizzo della memoria dei pitoni a circa 1,8 GB e non riesco a ottenere quella memoria da rilasciare. Ho messo insieme un banco di prova che è molto semplice:Utilizzo di memoria enorme del modulo json di Python?
with open("test_file.json", 'r') as f:
j = json.load(f)
Mi dispiace che non posso fornire un file JSON di esempio, il mio file di prova ha un sacco di informazioni sensibili, ma per il contesto, ho a che fare con un file nell'ordine di 240 MB. Dopo aver eseguito le 2 righe precedenti, ho in uso il precedente 1.8GB di memoria. Se faccio allora l'utilizzo della memoria del j
non cade affatto. Se lo seguo con un gc.collect()
ancora non si rilascia. Ho anche provato a scaricare il modulo json ed eseguire un altro gc.collect.
Sto provando a eseguire un po 'di profilazione della memoria, ma ora ho accumulato una CPU al 100% per circa un'ora e non ha ancora prodotto alcun output.
Qualcuno ha qualche idea? Ho anche provato quanto sopra usando cjson piuttosto che il modulo json impacchettato. cjson usava circa il 30% di memoria in meno ma in caso contrario mostrava esattamente gli stessi problemi.
Sto eseguendo Python 2.7.2 su server Ubuntu 11.10.
Sono felice di caricare qualsiasi profiler di memoria e vedere se funziona meglio di heapy e fornire qualsiasi diagnostica che si possa ritenere necessaria. Sto cercando un grosso file json di prova che posso fornire a chiunque altro per provarlo.
Si prega di provare con un altro file. Stai eseguendo una sessione interattiva o un file di script Python? Entrambi mostrano lo stesso problema? – heltonbiker
Correlati: http://stackoverflow.com/questions/2400643/is-there-a-memory-efficient-and-fast-way-to-load-big-json-files-in-python – ChristopheD
@ChristopheD Il mio problema è con la memoria che non viene mai rilasciata. Non mi interessa tanto che viene utilizzata molta memoria durante l'analisi. – Endophage