Python memory_profiler 不一致的情节
Python memory_profiler inconsistent plots
我最近开始按照其中的说明使用 here. As a test run, I tried to profile the toy code from here 的 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 管理内存的方式不同,您在不同的运行中可能会得到略有不同的图。
我最近开始按照其中的说明使用 here. As a test run, I tried to profile the toy code from here 的 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 管理内存的方式不同,您在不同的运行中可能会得到略有不同的图。