マルチスレッドコード(実際にはDataFrame
のカスタムサブクラスSound
というカスタムサブクラス)でpandas.DataFrame
を使用しています。プログラムのメモリ使用量が徐々に1000万を超えて増加し、最終的にコンピュータのメモリの約100%に達し、クラッシュするため、メモリリークが発生していることに気付きました。pandasデータフレームを使用したメモリリーク
私はこのリークを追跡しようとするobjgraphを使用し、それはいけないながらMyDataFrame
のインスタンスの数は、すべての時間を上がっていることが判明:そのrun
メソッド内のすべてのスレッドは、インスタンスを作成し、いくつかの計算を行い、保存しますその結果、ファイルが生成され、終了します。したがって、参照は保持されません。
それは普通のことだか、いない場合、私は見当がつかない...これが維持されているものであるように見えます:私は、メモリ内のすべてのデータフレームが、同様の参照グラフを持っていることがわかったobjgraph
を使用して
メモリ内の私のオブジェクト。どんなアイデア、アドバイス、洞察?
これを複製するための短いコードスニペットを含めることは可能ですか? –
ガベージコレクタを手動で実行しようとしましたか?循環参照がある場合は、メモリを解放する必要があります。 'import gc; gc.collect() ' – lgautier