如何仅在 python 中测试时启用内存分析器?

how to enable memory profiler only when testing in python?

我在 python 中使用 memory_profiler 并分析了一些代码。但我只希望在进行测试时启用它,就像从测试套件调用该函数一样。我不希望在生产中代码为 运行 时启用探查器。有什么办法吗?

我愿意接受像 "how to enable decorators only when the testing is happening?" 这样的一般性建议。

示例代码-

from memory_profiler import profile

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

装饰师,

@profile(precision=4)
def my_func():
    ...

这只是一种奇特的写法:

def my_func():
    ...

my_func = profile(precision=4)(my_func)

因此如果你需要一个“条件装饰器”,你可以将条件应用到后者:

from memory_profiler import profile

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

if testing:
    my_func = profile(precision=4)(my_func)