zoukankan      html  css  js  c++  java
  • multiprocessing.Pool 捕获error

    调用 pool.apply_async 后没有报错直接退出,导致我一直以为是 join 后主进程没有阻塞,直接结束导致子进程直接退出。原来是子进程的执行时有error,但是没有捕获到

    import multiprocessing as mp
    
    class A:
        def __init__(self,re):
            self.re = re
    
    def do_stuff(num):
        result = 5/(2 - num)  #Line 8
        return A(result) 
    
    def success_handler(result:A):
        print("success",result.re)
    
    def error_handler(e):
        print(e.__cause__)
    
    if __name__ == '__main__':
        with mp.Pool(2) as my_pool:
            results =  [
                my_pool.apply_async(
                    do_stuff, 
                    args=(i,),
                    callback=success_handler, 
                    error_callback=error_handler
                ) 
                for i in range(3)
            ]
    
            try:
                for result_obj in results:
                    print("result is: {}".format(result_obj.get()))
            except ZeroDivisionError as e:
                print("Oh, boy.  This is the second time I've seen this error.")
    如果是此文是转载文章,本人会附上转载链接,此篇文章的版权归原创作者所属,如果侵权请与我联系,我会删除此文。

    若没有标明转载链接,此篇文章属于本人的原创文章,其版权所属:
    作者:feiquan
    出处:http://www.cnblogs.com/feiquan/
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    大家写文都不容易,请尊重劳动成果~ 这里谢谢大家啦(*/ω\*)
  • 相关阅读:
    StrUtils
    WebUtil
    TreeUtil
    SQL解决表结构不同的数据同步方案
    MongoDB还原备份Bson文件及导出SQL文件
    Tengine安装步骤
    C++_练习—多态_virtual
    C++_练习—this指针
    C++_练习—继承_构造初始化列表
    C++_练习—继承_构造析构
  • 原文地址:https://www.cnblogs.com/feiquan/p/13656582.html
Copyright © 2011-2022 走看看