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使用更少内存的好练习...
您可以在情况下使用del d
在完成该数组时使用该数组,但是Python将在程序完成运行后照顾内存本身。我发现了其他两个相似的问题,并且可能会更深入地研究python的内存管理,这是链接:
如何在Python中明确自由存储器?
及其答案:
https://stackoverflow.com/a/1316793/6475414
和:
在Python中释放内存
只是为了在函数中使用d时添加一点,这取决于何时声明d。如果d在该函数中声明,并且没有内部函数引用D,则将收集垃圾。
例如:
def outer():
d = np.arange(10000)
def inner():
d += 1
return d
return inner
在这种情况下,如果返回outer()
功能后,D仍将存在于内存中。