IPython内存分析期间报告了奇怪的增量值

2024-10-01 07:10:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在查看jakevanderplas的《Python数据科学手册》时,我正在重新创建各种调试和分析工具的使用示例。{cdhe>提供了一个演示函数的示例:

def sum_of_lists(N):
    total = 0
    for i in range(5):
        L = [j ^ (j >> i) for j in range(N)]
        total += sum(L)
        del L
    return total

我在一个Jupyter笔记本上执行它,得到了以下输出:

^{pr2}$

。。。我立刻觉得很奇怪。根据这本书,我应该在第4行得到25.4 MiB的增加,在第6行得到相应的负增长。但我有一个巨大的负增长,这根本不符合我预期的情况。根据第6行,应该有158.8的增量。在

另一方面,Mem usage描绘了一幅更合理的画面(113.2-81.3=31.9mib增加)。所以我只剩下一个奇怪的,巨大的负增量,和两个测量的内存使用变化,它们彼此不一致。怎么回事?在

为了检查我的解释器/分析器是否真的发生了一些奇怪的事情,我继续复制了this answer中给出的示例,并得到了以下输出:

Line #    Mem usage    Increment   Line Contents
================================================
     2     86.5 MiB     86.5 MiB   def my_func():
     3     94.1 MiB      7.6 MiB       a = [1] * (10 ** 6)
     4    246.7 MiB    152.6 MiB       b = [2] * (2 * 10 ** 7)
     5     94.1 MiB   -152.6 MiB       del b
     6     94.1 MiB      0.0 MiB       return a

我想没什么问题。上一个例子会发生什么?在


Tags: in示例forreturndeflineusagerange