何时释放数据



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仍将存在于内存中。

最新更新