在查看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
我想没什么问题。上一个例子会发生什么?在
目前没有回答
相关问题 更多 >
编程相关推荐