Dae*_*all 7 python multithreading exception
我需要跨线程边界传递异常.
我使用嵌入非线程安全的应用程序,它具有一个线程调用安全,post_event(赎回),要求从主线程调用蟒蛇.
我在一个单独的线程中运行pygtk gui,所以当单击一个按钮时,我使用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
Run Code Online (Sandbox Code Playgroud)
任何帮助表示感谢,谢谢.
| 归档时间: |
|
| 查看次数: |
6040 次 |
| 最近记录: |