我有一个 python 脚本,它使用开源 pytorch 模型,并且此代码存在内存泄漏。我用 memory_profiler 运行它mprof run --include-children python my_sctipt.py并得到以下图像:
我正在尝试通过系统python模块tracemalloc搜索泄漏的原因:
tracemalloc.start(25)
while True:
...
snap = tracemalloc.take_snapshot()
domain_filter = tracemalloc.DomainFilter(True, 0)
snap = snap.filter_traces([domain_filter])
stats = snap.statistics('lineno', True)
for stat in stats[:10]:
print(stat)
Run Code Online (Sandbox Code Playgroud)
如果仅查看tracemalloc 输出,我将无法识别问题。我认为问题出在 C 扩展中,但是我想确保这是真的。我尝试通过 DomainFilter 更改域,但我仅在 0 域中输出。
另外,我不明白所获得的参数的含义tracemalloc.start(frameno),frameno是最近帧的数量,但是当我更改它时没有任何反应。
接下来我该怎么做才能找到代码中导致内存泄漏的有问题的地方?
期待您的答复。