何时释放数据?

时间:2017-06-08 20:03:39

标签: python

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使用更少内存的好习惯......

2 个答案:

答案 0 :(得分:0)

你可以在你的情况下使用del d来取消引用数组,但是Python会在程序运行完毕后自行处理内存。我发现了另外两个相似的问题,可能深入研究python中的内存管理,这里有链接:

How can I explicitly free memory in Python?

及其答案:

https://stackoverflow.com/a/1316793/6475414

Releasing memory in Python

答案 1 :(得分:0)

只是在函数中使用d时添加一点,它取决于声明d的时间。如果在函数内声明了d,并且没有引用d的内部函数,那么它将被垃圾收集。

例如:

def outer():
     d = np.arange(10000)
     def inner():
         d += 1
         return d
     return inner

在这种情况下,如果返回outer()函数后,d仍将驻留在内存中。