如果在一个线程中有异常,如何停止所有线程?



我目前正在使用python的并发运行一个函数。未来的图书馆。它看起来像这样(我使用Python 3.10.1):

with concurrent.futures.ThreadPoolExecutor() as executor:
future_results = [executor.submit(f.get_pdf_multi_thread, ssn) for ssn in ssns]
for future in concurrent.futures.as_completed(future_results):
try:
future.result()
except Exception as exc:
# If there is one exception in a thread stop all threads
for future in future_results:
future.cancel()
raise exc

这样做的目的是,如果其中一个线程中有任何异常,停止其余线程并抛出异常. 然而,我不知道这是否正在做它应该做的事情(有时它需要很多时间来抛出我想要的异常,而其他时候它会很快抛出它)。你能帮我一下吗?谢谢你

看看executor.shutdown(wait=False)方法

听从Olvin wright的建议,我成功地完成了任务

list(executor.map(f.get_pdf_multi_thread, ssns))

相关内容

  • 没有找到相关文章

最新更新