如何删除python中的变量以清除python中的ram内存?
R:
a = 2
rm(a)
Python:
a = 2
如何清除单个变量或一组变量?
最佳答案
python 内存清理由垃圾收集器管理。在 CPython 上,它基于引用计数。 您可以像这样显式调用垃圾收集器:
import gc
gc.collect()
这可以在调用使用 ram 方面的大变量的函数后完成。 请注意,您不必显式调用此函数,因为垃圾收集器最终将被调用以自动释放内存。
如果您仍想显式删除变量,可以使用 del像这样的声明(如前所述):
x = [1, 2, 3]
i = 42
s = 'abc'
del s # delete string
del x[1] # delete single item in a list
del x, i # delete multiple variables in one statement
del 语句
更好地理解什么del
做和它的局限性让我们看看 python 如何在 ram 上存储变量。
x = [1, 2, 3]
上面的代码在名称 x
之间创建了一个引用到列表 [1, 2, 3]
存储在堆上。 x
只是指向该列表的指针。
x = [1, 2, 3]
y = x
x is y # True
在这个例子中我们有引用 x
和堆上的列表 [1, 2, 3]
,但是这个新的是什么 y
多变的?它只是另一个指针,这意味着现在我们有两个指针指向同一个 [1, 2, 3]
列表。
返回 del
语句,如果我们删除一个变量,它不会影响列表或另一个变量
x = [1, 2, 3]
y = x
del x
print(y) # prints [1, 2, 3]
所以这里我们不会释放列表,只会减少对列表的引用计数,但我们仍然有y
。指向它。
为了克服这个问题,我们可以使用 weakref模块指向y
到列表,什么时候x
被删除列表也被删除。
底线
- 使用
gc.collect()
在重度内存功能之后 - 使用
del x, y
删除指向特定对象的所有指针以释放它 - 使用
weakref
模块,以避免在删除所有其他对对象的引用后将对象保留在 ram 上
关于python - python中r替代的rm()函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41777119/