python 内存泄漏定位
程序员文章站
2022-03-21 16:34:31
...
问题初步定位
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 = defultdicts(int)
after = defultdicts(int)
for i in get_objects():
befor[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这个函数在实时画图中会导致严重的内存泄漏。
先留个坑(目前手动释放函数中的字典可以解决,但会导致绘图最大化后缩小后布局混乱的问题)
上一篇: vbs 获取当前目录的实现代码