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

时间:2017-12-25 18:09:07

标签: python python-3.x testing decorator memory-profiling

我在python中使用memory_profiler并分析一些代码。但我只想在测试发生时启用它,就像从测试套件中调用函数一样。当代码在生产中运行时,我不希望启用探查器。有没有办法做到这一点?

我愿意接受通用建议,例如"如何在测试发生时启用装饰器?"。

示例代码 -

from memory_profiler import profile

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

1 个答案:

答案 0 :(得分:1)

装饰者,

@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)