以下是我对python3的测试代码:
#! /usr/bin/python3
from memory_profiler import profile
@profile(precision=10)
def f():
huge_list = [x for x in range(2000)]
del huge_list
print("finish")
if __name__ == "__main__":
f()
输出:
Line # Mem usage Increment Line Contents
================================================
4 17.2109375000 MiB 17.2109375000 MiB @profile(precision=10)
5 def f():
6 17.2109375000 MiB 0.0000000000 MiB huge_list = [x for x in range(2000)]
7 17.2109375000 MiB 0.0000000000 MiB del huge_list
8 17.2226562500 MiB 0.0117187500 MiB print("finish")
它表明huge_list = [x for x in range(2000)]
不占用任何内存。
我把它改成了huge_list = "aa" * 2000
,它是一样的。
但是如果我把2000改成20000,它会有一些记忆
为什么?
这里有一个类似的问题:What does “del” do exactly?
我不确定事情到底是如何运作的,但我认为事情就是这样发生的:
所以我想这在很大程度上取决于系统
编辑:
正如Lescurel在问题评论中所写:
相关问题 更多 >
编程相关推荐