【发布时间】:2022-07-19 00:21:03
【问题描述】:
我目前正在使用 python 的 concurrent.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
这样做的目的是,如果其中一个线程出现异常,则停止其余线程并抛出异常。但是我不知道这是否正在做它应该做的事情(有时需要很长时间才能抛出我想要的异常,而有时它会很快抛出它)。你能帮我解决这个问题吗?谢谢
【问题讨论】:
-
sys.exit呢? -
只需使用
executor.map()。 -
也许你可以用
Coroutine代替多线程。 -
如何设置 variablue run 为 true 或 false?
-
说真的,
list(executor.map(f.get_pdf_multi_thread, ssns))如果出现异常,将关闭所有线程。
标签: python python-3.x concurrent.futures