我有一个对象:
class Flow:
该对象属于对象列表flowList = [Flow1, Flow2, Flow3]
如果我这样做:
del flowList[0]
我也需要销毁Flow1对象吗?我希望我的脚本能够处理数千个流,并且具有内存效率。处理后的流应该在处理后死亡,因为它不再需要了。
不,这不是必需的,而且据我所知,没有可靠的方法可以显式释放某些内存。
Python使用垃圾回收,这意味着当不再需要对象时,它会自动处理这些对象。一旦你处理完一个对象,你可以简单地离开它。如果对Flow1
的唯一引用是列表中的那个,那么del flowList[0]
就足以让它被释放。如果列表之外有另一个引用,则可以执行del Other_Flow1
来删除另一个参考以允许释放它。
如果你有这样的东西:
huge_list = [1, 2, 3, . . .]
use_huge_list(huge_list)
您可以在调用use_huge_list
之后添加类似的内容,以帮助更容易地释放huge_list
:
del huge_list
这将删除对[1, 2, 3, . . .]
对象的引用huge_list
。如果这是对该对象的唯一引用,它将允许释放该对象。不过,只有当内存是一个巨大的问题,并且huge_list
将在作用域中保留很长一段时间,但从未使用过时,我才会这么做(尽管,这可能是一种气味,表明您无论如何都需要重构(。
我不会经常这样使用del
。99%的情况下没有必要删除标签。不要想得太多。除非你已经分析并确定内存中的对象会给你带来问题,否则不要担心。