我目前正在使用 python 的并发.futures 库运行一个函数。它看起来像这样(我使用的是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
这样做的目的是,如果其中一个线程出现任何异常,则停止其余线程并抛出异常。然而我不知道这是否正在做它应该做的事情(有时需要很多时间才能抛出我想要的异常,而有时它会很快抛出它)。你能帮我解决这个问题吗?谢谢你
按照 Olvin Roght 的建议,我成功完成了任务
list(executor.map(f.get_pdf_multi_thread, ssns))