我目前正在使用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))