生成concurrent.futures.ThreadPoolExecutor时Python没有调用堆栈
我正在使用下面的代码生成多个线程。当出现问题时,代码不会消失,并且会打印stacktrace,它只是静静地消失。如果删除执行器,并在同一线程上运行,就会得到堆栈跟踪 有没有办法生成线程,并在出错时仍然获得堆栈跟踪生成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:
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:“如果引发调用,此方法将引发相同的异常。”