有没有一种方法可以判断线程是正常退出还是因异常而退出?
如之前所述,Thread类的包装器可以捕获该状态。以下是一个示例。
>>> from threading import Thread
>>> class MyThread(Thread):
def run(self):
try:
Thread.run(self)
except Exception as err:
self.err = err
pass # or raise err
else:
self.err = None
>>> mt = MyThread(target=divmod, args=(3, 2))
>>> mt.start()
>>> mt.join()
>>> mt.err
>>> mt = MyThread(target=divmod, args=(3, 0))
>>> mt.start()
>>> mt.join()
>>> mt.err
ZeroDivisionError('integer division or modulo by zero',)
让您的线程函数捕获异常。(您可以使用一个简单的包装函数来实现这一点,该函数只需在try
...except
或try
...except
...else
块中调用旧的线程函数)。然后问题就变成了“如何从一个线程传递信息”,我想您已经知道如何做到这一点。
succeded
会不会对解释器更加友好一些呢? - Daren Thomas