Python memory_profiler不一致的情节

时间:2015-07-30 19:13:24

标签: python memory plot profiler memory-profiling

我最近开始使用来自here的python内存分析器。作为测试运行,我尝试按照其中的说明从here分析玩具代码。关于我看到的产出,我有一些天真的问题。

import time

@profile
def test1():
    n = 10000
    a = [1] * n
    time.sleep(1)
    return a

@profile
def test2():
    n = 100000
    b = [1] * n
    time.sleep(1)
    return b

if __name__ == "__main__":
    test1()
    test2()

这是使用mprof运行然后绘制命令行选项的输出: With function profiling

删除@profile行后,我再次运行了探查器并获得了以下结果: Without function profiling

除了功能的括号外,我期待几乎相同的情节(因为代码很简单),但我看到一些显着的差异,例如情节的结束时间,括号内的变化等。

有人可以阐明这些差异吗?

编辑: 对于小间隔,具有功能分析的图如下所示: small intervals

1 个答案:

答案 0 :(得分:1)

您看到的差异可能是由于@profile存储的信息计入程序使用的总内存中。存储此信息也有轻微的开销,因此运行时间也不同。

此外,由于Python管理内存的方式不同,您可能会在不同的运行中略有不同的情节。