如何删除python中的变量以清除python中的ram内存?
R:
a = 2
rm(a)Python
a = 2如何清除单变量或一组变量?
发布于 2017-01-21 09:05:22
python内存清理由垃圾收集器管理。在CPython上,它是基于引用计数的。您可以像这样显式地调用垃圾收集器:
import gc
gc.collect()这可以在调用一个函数之后完成,该函数以ram的形式使用较大的变量。请注意,您不必显式调用此函数,因为垃圾收集器最终将被调用以自动释放ram。
如果仍然希望显式删除变量,可以使用德尔语句(如前面所写),如下所示:
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 statementdel语句
为了更好地理解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指向它。
为了克服这一问题,我们可以使用弱引用模块将y指向列表,当x被删除时,列表也会被删除。
底线
gc.collect()del x, y删除指向特定对象的所有指针以释放它weakref模块避免将对象保存在ram上发布于 2017-01-21 08:12:08
使用del
>>> a=2
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not definedhttps://stackoverflow.com/questions/41777119
复制相似问题