12345678910111213141516171819202122232425 |
- import threading
- import sys
- class ThreadHandler(object):
- def __init__(self, name, callable, *args, **kwargs):
- # Set up exception handling
- self.exception = None
- def wrapper(*args, **kwargs):
- try:
- callable(*args, **kwargs)
- except BaseException:
- self.exception = sys.exc_info()
- # Kick off thread
- thread = threading.Thread(None, wrapper, name, args, kwargs)
- thread.setDaemon(True)
- thread.start()
- # Make thread available to instantiator
- self.thread = thread
- def raise_if_needed(self):
- if self.exception:
- e = self.exception
- raise e[0], e[1], e[2]
|