Python thread exit code Python thread exit code multithreading multithreading

Python thread exit code


As mentioned, a wrapper around the Thread class could catch that state. Here's an example.

>>> 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.errZeroDivisionError('integer division or modulo by zero',)


You could set some global variable to 0 if success, or non-zero if there was an exception. This is a pretty standard convention.

However, you'll need to protect this variable with a mutex or semaphore. Or you could make sure that only one thread will ever write to it and all others would just read it.


Have your thread function catch exceptions. (You can do this with a simple wrapper function that just calls the old thread function inside a try...except or try...except...else block). Then the question just becomes "how to pass information from one thread to another", and I guess you already know how to do that.