我需要抢占__del__
,我想知道这样做的正确方法是什么。基本上我在代码中的问题是这个..
class A:
def __init__(self):
self.log = logging.getLogger()
self.log.debug("In init")
self.closed = False
def close(self):
self.log.debug("Doing some magic")
self.closed = True
def __del__(self):
if not self.closed:
self.close()
self.log.debug("In closing")
# What should go here to properly do GC??
现在有什么方法可以调用标准的GC功能吗?
感谢您阅读!!
史蒂夫
答案 0 :(得分:4)
__del__
不是真正的析构函数。在对象被销毁之前调用它以释放它所持有的任何资源。它不必担心释放内存本身。
如果你继承了一个也可能有开放资源的类,你也可以随时调用父类'__del__
。
答案 1 :(得分:3)
请使用with
声明。
请参阅http://docs.python.org/reference/compound_stmts.html#the-with-statement
with语句保证if 输入()方法不返回 错误,然后退出()将始终 被称为。
不要使用__del__
,而是使用上下文管理器对象的__exit__
。
答案 2 :(得分:1)
如果您想手动调用GC,请调用gc.collect()。