Python内存分析器不一致的绘图

Python内存分析器不一致的绘图,python,memory,plot,profiler,memory-profiling,Python,Memory,Plot,Profiler,Memory Profiling,我最近从开始使用python内存分析器。作为一次测试运行,我试图按照其中的说明来分析玩具代码。对于我看到的输出,我有一些天真的问题 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

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

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运行然后打印命令行选项的输出:

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

除了函数的括号外,我期望的是几乎相同的图(因为代码很简单),但我看到了一些显著的差异,如图的结束时间、括号内的变化等

有人能解释一下这些差异吗

编辑: 对于较小的间隔,带有函数分析的绘图如下所示:

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


此外,由于Python管理内存的方式不同,您可能会在不同的运行中得到稍有不同的绘图。

谢谢您的回答。只是想确保我没有遗漏任何重要的东西。还有一点很奇怪:在这两种情况下,结尾不是都应该有一行,显示内存使用量的下降吗?事实上,如果你给它一个足够小的时间间隔,你应该会看到内存使用量的下降。例如,试着用-t0.001运行它:
mprof run-t0.001 test1.py
Yes,我现在看到在配置了函数的那一个上内存的下降;也为未来用户添加了该绘图。顺便说一句,当我尝试在没有函数分析的情况下绘制.dat输出时,我遇到了一个错误。我正在github问题跟踪器中提交详细信息。Fabian:找到了问题区域。我在函数plot_文件中将mem_line_标签强制为空字符串,这导致了错误。