python multiprocessing.Pool 一个很有用的调试技巧

多进程在开发时,信息无法print,或者子进程根本就开启不起来,输出窗口也无法看到异常信息。这时使用error_callback回调,是不二法门。
开启进程时,增加error_callback方法,程序异常,直接执行回调函数。错误一幕了然
简单示例:

def helloworld(x):
    print(x / 0)
    return x + 1


if __name__ == '__main__':
    arr = list(range(10))
    with multiprocessing.Pool(min(os.cpu_count(), math.ceil(len(arr) * 1.0 / 2), 4)) as pool:
        results = []
        for t in arr:
            logging.info(t)
            r = pool.apply_async(func=helloworld,
                                 args=(t,),  # 单个参数时,要构成元组,逗号不能丢
                                 error_callback=lambda x: logging.exception(f'func failed:{x}')
                                 )
            results.append(r)

        sum = 0
        for r in results:
            sum += r.get()

        print(sum)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值