生成concurrent.futures.ThreadPoolExecutor时Python没有调用堆栈

生成concurrent.futures.ThreadPoolExecutor时Python没有调用堆栈,python,Python,我正在使用下面的代码生成多个线程。当出现问题时,代码不会消失,并且会打印stacktrace,它只是静静地消失。如果删除执行器,并在同一线程上运行,就会得到堆栈跟踪 有没有办法生成线程,并在出错时仍然获得堆栈跟踪 import concurrent.futures with concurrent.futures.ThreadPoolExecutor(max_workers=max_cpus) as executor: for something in something_else:

我正在使用下面的代码生成多个线程。当出现问题时,代码不会消失,并且会打印stacktrace,它只是静静地消失。如果删除执行器,并在同一线程上运行,就会得到堆栈跟踪

有没有办法生成线程,并在出错时仍然获得堆栈跟踪

import concurrent.futures

with concurrent.futures.ThreadPoolExecutor(max_workers=max_cpus) as executor:
    for something in something_else:
        future = executor.submit(my_func, arg1)
            

为了方便异常处理,
Future
将在方法上引发异常,所以您可以在
try.内部调用它。。除了

因此,您可以只修补代码:

从concurrent.futures导入ThreadPoolExecutor,完成时
使用ThreadPoolExecutor(最大工作线程=最大CPU)作为执行器:
期货=[]
对于其他事物中的某些事物:
futures.append(executor.submit(my_func,arg1))
对于已完成的未来(期货):
尝试:
result=future.result()
例外情况除外,如e:
打印(“例外:”,e)
其他:
#做点什么

当您试图检索结果时,它将抛出异常。把所有的期货存到某个地方,然后试着打电话。引用docs:“如果引发调用,此方法将引发相同的异常。”