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)

这样可以获取当前运行代码中内存开销的最大十条指令。

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这个函数在实时画图中会导致严重的内存泄漏。

先留个坑(目前手动释放函数中的字典可以解决,但会导致绘图最大化后缩小后布局混乱的问题)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章