删除变量不会从 RAM 内存中删除其内存[重复]

问题描述 投票:0回答:2

我广泛使用Python(Canopy)进行地球科学应用。因为我的应用程序很消耗内存,所以我试图找到方法来删除程序中不再需要的变量,我尝试使用 del 命令来删除变量内存,但我发现 Canopy 使用的空间仍然是相同的。关于如何从内存中完全删除变量的任何想法。 谢谢

python python-2.7 canopy
2个回答
9
投票

您无法在 Python 中手动从内存中删除对象!

Python 垃圾收集器(GC)将自动释放不再有现有引用的对象的内存(每个解释器的实现细节有所不同)。它会定期检查后台中是否有废弃的对象,而无需您进行交互。

因此,要回收一个对象,您必须通过为指向该对象的所有变量分配不同的值(例如 None)来消除对它的所有引用。您还可以使用

del
语句删除变量名称,但正如您已经注意到的,这只会删除带有引用的名称,而不会删除对象及其数据本身。只有 GC 才能做到这一点。


2
投票

现在,可以手动完成。为此,您需要分两步进行:

  1. 使用命令 del 从工作区中删除变量
  2. 使用命令gc.collect运行垃圾收集器并清除RAM内存

代码示例:

import numpy as np
import gc

a = np.array([1,2,3])
del a
gc.collect()

更多信息:链接

© www.soinside.com 2019 - 2024. All rights reserved.