Python线程退出代码

Jia*_* Yu 12 python multithreading exit-code

有没有办法判断一个线程是正常退出还是因为异常?

A. *_*ady 16

如前所述,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',)
Run Code Online (Sandbox Code Playgroud)