我知道 python 有一个自动垃圾收集器,因此当不再引用变量时,它应该自动删除变量。
我的印象是,局部变量(函数内部)不会发生这种情况。
def funz(z):
x = f(z) # x is a np.array and contains a lot of data
x0 = x[0]
y = f(z + 1) # y is a np.array and contains a lot of data
y0 = y[0]
# is x and y still available here?
return y0, x0
Is del x
节省内存的正确方法?
def funz(z):
x = f(z) # x is a np.array and contains a lot of data
x0 = x[0]
del x
y = f(z + 1) # y is a np.array and contains a lot of data
y0 = y[0]
del y
return y0, x0
编辑:我已经编辑了我的示例,使其更类似于我的实际问题。
在我真正的问题中,x和y不是列表,而是包含不同大的类np.array
.
编辑:我能够运行代码:
x = f(z)
x0 = x[0]
print(x0)
y = f(z + 1)
y0 = [0]
print(y0)
实现使用引用计数来确定何时应删除变量。
变量超出范围后(如您的示例所示),如果没有剩余的引用,则内存将被释放。
def a():
x = 5 # x is within scope while the function is being executed
print x
a()
# x is now out of scope, has no references and can now be deleted
除了字典键和列表中的元素之外,通常没有什么理由手动删除 Python 中的变量。
虽然,正如答案中所说这个问题 https://stackoverflow.com/questions/6146963/when-is-del-useful-in-python,使用 del 有助于显示意图。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)