pythonメモリリーク位置決め


問題の初歩的な位置づけ
 
import tracemalloc


tracemalloc.start()


'''
         
'''

snapshot = tracemalloc.take_snapshot()
top_stats = snapshots.statistics("lineno")
print("[top 10]")
for stat in top_ stats[:10]:
    print(stat)

これにより、現在の実行コードのメモリオーバーヘッドの最大10個の命令を取得できます.
from collections import defaultdict
from gc import get_objects

before = defaultdict(int)

after = defaultdict(int)



for i in get_objects():

    before[type(i)] += 1



#             

for i in get_objects():
    after[type(i)] += 1
print([(k, after[k]-before[k]) for k in after if after[k]-before[k]])

これにより、ループのたびに文が漏れるメモリの種類と漏洩メモリの種類を特定できます.
matplotlibライブラリでtransform.pyの下のset_childrenという関数は、リアルタイムグラフで深刻なメモリ漏洩を引き起こす.
まずピットを残します(現在、関数の辞書を手動で解放して解決できますが、図面を最大化した後に縮小した後にレイアウトが混乱する問題が発生します)