import time
class tA(obj):
def __init__(self):
pass
def __del__(self):
time.sleep(5)
我发现,当类tA
被销毁时,它不会延迟5秒。
为什么?以及如何增加延迟?
是否有方法让线程在退出之前进入休眠状态?
答案 0 :(得分:2)
它确实有效。您可能会对这样一个事实感到困惑:当您认为对象没有被破坏时 - 它可能会在稍后被破坏。有关详情,请参阅documentation,特别注意del x
无法保证致电x.__del__
。
一般情况下,如果你没有足够的理由这样做(我实际上认为你没有),你不应该使用__del__
,并且很少有足够的理由。
我发现实际调用该函数的情况例如是:
x = tA()
x = None # __del__ is called in my python
tA() # __del__ is called in my python
x = tA()
exit # __del__ is called in my python
x = tA()
del x # __del__ is NOT called in my python
至于在退出之前使线程休眠,你需要将睡眠置于线程代码中(注意__del__
可能在任何线程中运行,并且当线程已经终止时),例如:< / p>
class tA(Thread):
def run(self):
try:
do_your_stuff()
finally:
time.sleep(5)
请注意finally
确保调用time.sleep(5)
,do_your_stuff()
是否成功返回或引发异常。
答案 1 :(得分:-2)
>>> import time
>>> class test():
... def __init__(self):
... print "a"
... time.sleep(5)
... def __del__(self):
... print "b"
...
>>> a=test()
a
b
>>>
例如它正在运作。 如果需要在类的最后一个函数中调用“sleep”。