zoukankan      html  css  js  c++  java
  • ThreadPoolExecutor/ProcessPoolExecutor不抛出异常的问题

    from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
    
    """
    在使用线程池/进程池之后,如果任务函数中出现异常,如果不调用result异常并不会抛出,导致一种没有报错的假象
    """
    
    def func():
        lst = [1, 2]
        # 写一个bug,测试是否或报错
        print(lst[3])
    
    
    def callbak(f):
        exception = f.exception()
        if exception:
            # 如果exception获取到了值,说明有异常.exception就是异常类
            print(exception)
    
    
    if __name__ == '__main__':
        pool = ThreadPoolExecutor(1)
        # 用这种方法不会异常,ThreadPoolExecutor/ProcessPoolExecutor会将异常封装到futures对象中,需要调用.exception()方法获取异常
        pool.submit(func).add_done_callback(callbak)
    
        pool.shutdown()
  • 相关阅读:
    学习Java的第八天
    学习Java的第七天
    学习Java的第六天
    学习Java的第五天
    学习Java的第四天
    学习Java的第三天
    学习Java的第二天
    学习Java的第一天
    第九天
    第八次
  • 原文地址:https://www.cnblogs.com/wtil/p/13594349.html
Copyright © 2011-2022 走看看