如何仅在 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)
我在 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)