Python是否会对之前的内存进行任何分析?例如,如果我有:
d = some big array
# ... use(d) ...
# no d is used from here
# a lot of other code, the code could use more big arrays
python何时决定删除d
使用的内存?
如果我在函数中使用d
,那么在函数完成时会释放d
吗?
通常情况下这很难,因为d
可以分配给其他人,并且可以在功能完成后继续使用d
。
然而,我正在寻找一些可以让python使用更少内存的好习惯......
答案 0 :(得分:0)
你可以在你的情况下使用del d
来取消引用数组,但是Python会在程序运行完毕后自行处理内存。我发现了另外两个相似的问题,可能深入研究python中的内存管理,这里有链接:
How can I explicitly free memory in Python?
及其答案:
https://stackoverflow.com/a/1316793/6475414
和
答案 1 :(得分:0)
只是在函数中使用d时添加一点,它取决于声明d的时间。如果在函数内声明了d,并且没有引用d的内部函数,那么它将被垃圾收集。
例如:
def outer():
d = np.arange(10000)
def inner():
d += 1
return d
return inner
在这种情况下,如果返回outer()
函数后,d仍将驻留在内存中。