如何在Python中在线程间传递异常
我需要在不同的线程之间传递异常。
我正在使用Python嵌入在一个不支持多线程的应用程序中,这个应用程序有一个线程安全的调用方式,叫做post_event(callable),它可以从主线程调用可调用的对象。
我在一个单独的线程中运行pygtk的图形界面,所以当点击按钮时,我会用post_event发送一个事件,并在继续之前等它完成。但是我需要让调用者知道被调用的部分是否抛出了异常,如果抛出了,就要把这个异常抛出来。我对错误的详细信息不太在意,只关心异常本身。
我的代码大致是这样的:
class Callback():
def __init__(self,func,*args):
self.func=func
self.args=args
self.event=threading.Event()
self.result=None
self.exception=None
def __call__(self):
gtk.gdk.threads_enter()
try:
self.result=self.func(*self.args)
except:
#what do I do here? How do I store the exception?
pass
finally:
gtk.gdk.threads_leave()
self.event.set()
def post(self):
post_event(self)
gtk.gdk.threads_leave()
self.event.wait()
gtk.gdk.threads_enter()
if self.exception:
raise self.exception
return self.result
任何帮助都非常感谢,谢谢。