从对象列表中删除python对象后销毁该对象



我有一个对象:

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%的情况下没有必要删除标签。不要想得太多。除非你已经分析并确定内存中的对象会给你带来问题,否则不要担心。

最新更新