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

Python:从multiprocessing.Process获取回溯

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

Python:从multiprocessing.Process获取回溯

使用

tblib
您可以传递包装的异常并在以后重新引发它们:

import tblib.pickling_supporttblib.pickling_support.install()from multiprocessing import Poolimport sysclass ExceptionWrapper(object):    def __init__(self, ee):        self.ee = ee        __, __, self.tb = sys.exc_info()    def re_raise(self):        raise self.ee.with_traceback(self.tb)        # for Python 2 replace the previous line by:        # raise self.ee, None, self.tb# example of how to use ExceptionWrapperdef inverse(i):    """ will fail for i == 0 """    try:        return 1.0 / i    except Exception as e:        return ExceptionWrapper(e)def main():    p = Pool(1)    results = p.map(inverse, [0, 1, 2, 3])    for result in results:        if isinstance(result, ExceptionWrapper): result.re_raise()if __name__ == "__main__":    main()

因此,如果您在远程进程中捕获到异常,则将其包装

ExceptionWrapper
,然后将其传递回去。调用
re_raise()
主流程即可完成工作。



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

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

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