栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python的调用者线程中捕获线程的异常

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python的调用者线程中捕获线程的异常

问题是

thread_obj.start()
立即返回。你产生的子线程在其自己的上下文中使用自己的堆栈执行。在那里发生的任何异常都在子线程的上下文中,并且在其自己的堆栈中。我现在想到的一种将此信息传达给父线程的方法是使用某种消息传递,因此你可能会对此进行研究。

尝试以下尺寸:

import sysimport threadingimport Queueclass ExcThread(threading.Thread):    def __init__(self, bucket):        threading.Thread.__init__(self)        self.bucket = bucket    def run(self):        try: raise Exception('An error occured here.')        except Exception: self.bucket.put(sys.exc_info())def main():    bucket = Queue.Queue()    thread_obj = ExcThread(bucket)    thread_obj.start()    while True:        try: exc = bucket.get(block=False)        except Queue.Empty: pass        else: exc_type, exc_obj, exc_trace = exc # deal with the exception print exc_type, exc_obj print exc_trace        thread_obj.join(0.1)        if thread_obj.isAlive(): continue        else: breakif __name__ == '__main__':    main()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414853.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号