【问题标题】:pdb-mmem flag of memory_profiler not workingmemory_profiler 的 pdb-mmem 标志不起作用
【发布时间】:2021-10-10 10:21:33
【问题描述】:

我想寻找内存泄漏。对于来自 memory_profiler 的 --pdb-mmem 标志将非常有帮助。

分析此脚本 test.py:

import time
from memory_profiler import profile

@profile
def my_func():
    a = [1] * (10 ** 6)
    b = [2] * (2 * 10 ** 7)
    del b
    return a

if __name__ == '__main__':
    my_func()

与:python -m memory_profiler --pdb-mmem=10 test.py

结果:

Line #    Mem usage    Increment  Occurences   Line Contents
============================================================
     4     33.6 MiB     33.6 MiB           1   @profile
     5                                         def my_func():
     6     41.2 MiB      7.6 MiB           1       a = [1] * (10 ** 6)
     7    193.9 MiB    152.7 MiB           1       b = [2] * (2 * 10 ** 7)
     8     41.4 MiB   -152.6 MiB           1       del b
     9     41.4 MiB      0.0 MiB           1       return a

但不会在第 7 行停止,如下所述:

--pdb-mmem MAXMEM     step into the debugger when memory exceeds MAXMEM

我做错了什么?

【问题讨论】:

    标签: python memory profiler


    【解决方案1】:

    作为替代方案,请考虑使用https://pythonspeed.com/fil。具体来说,它会报告 peak 内存的分配源,因此如果您泄漏了足够多的内存,则结果将由泄漏的数据主导,您可以找出哪些代码行负责分配。 p>

    (如果泄漏源不明显,您仍需要使用其他工具来找出未释放内存的原因,例如 Pymplyer 的 muppy。内存分析器也是如此。)

    【讨论】:

    • 这不是真正的答案。此外,明确提及您是您所建议内容的作者(之一)是一个很好的姿态。
    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    相关资源
    最近更新 更多