Sto utilizzando pandas.DataFrame
in un codice multi-thread (in realtà una sottoclasse personalizzata di DataFrame
denominata Sound
). Ho notato che ho una perdita di memoria, dal momento che l'utilizzo della memoria del mio programma aumenta gradualmente di oltre 10 minuti, per raggiungere finalmente il 100% della memoria del mio computer e il crash.Perdita di memoria utilizzando pandas dataframe
ho usato objgraph di provare questo tipo di monitoraggio delle perdite, e abbiamo scoperto che il conteggio delle istanze di MyDataFrame
è in costante aumento per tutto il tempo mentre non dovrebbe: ogni thread nel suo metodo run
crea un'istanza, fa alcuni calcoli, salva il risultato in un file ed esce ... quindi non dovrebbero essere conservati riferimenti.
Utilizzando objgraph
ho scoperto che tutti i frame di dati in memoria hanno un simile grafico di riferimento:
Non ho idea se questo è normale o no ... Sembra che questo è ciò che sta mantenendo i miei oggetti in memoria. Qualche idea, consiglio, intuizione?
È possibile includere uno snippet di codice breve per replicare questo? –
Hai provato a eseguire manualmente il garbage collector? Se si dispone di riferimenti circolari, potrebbe essere necessario per rilasciare la memoria. 'importa gc; gc.collect() ' – lgautier