【问题标题】:Handling an exception in another thread在另一个线程中处理异常
【发布时间】:2009-12-18 00:57:37
【问题描述】:

当另一个线程中的代码不受您的控制时,检测和处理 Python 中另一个线程中的异常的“正确”方法是什么?

例如,假设您将一个需要 2 个参数的函数设置为 threading.Thread 对象的目标,但在运行时尝试传递它 3. Thread 模块将在您甚至可以之前在另一个线程上抛出异常试图抓住它。

示例代码:

def foo(p1,p2):
    p1.do_something()
    p2.do_something()

thread = threading.Thread(target=foo,args=(a,b,c))
thread.start()

在不同的线程上引发异常。您将如何检测和处理它?

【问题讨论】:

    标签: python multithreading exception


    【解决方案1】:

    我认为你只能装饰你的目标函数或子类 threading.Thread 来处理异常。

    def safer( func ):
        def safer(*args,**kwargs):
            try:
                return func(*args,**kwargs)
            except Exception,e:
                print "Couldn't call", func
                # do_stuff( e )
        return safer
    
    
    thread = threading.Thread(target=safer(foo),args=(1,2,3))
    

    【讨论】:

    • 哇,不敢相信我自己没有想到这一点。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多