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.