【发布时间】:2020-11-19 09:37:09
【问题描述】:
我有这样的代码:
from concurrent.futures.thread import ThreadPoolExecutor
from time import sleep
def foo(message, time):
sleep(time)
print('Before exception in ' + message)
raise Exception('OOOPS! EXCEPTION IN ' + message)
if __name__ == '__main__':
executor = ThreadPoolExecutor(max_workers=2)
future1 = executor.submit(foo, 'first', 1)
future2 = executor.submit(foo, 'second', 3)
print(future1.result())
print(future2.result())
当我运行它时,我得到以下结果:
Before exception in first
Traceback (most recent call last):
...
File "...", line 8, in foo
raise Exception('OOOPS! EXCEPTION IN ' + message)
Exception: OOOPS! EXCEPTION IN first
Before exception in second
Process finished with exit code 1
为什么第二个异常被忽略了?我想在每个线程上捕获并处理异常
【问题讨论】:
标签: python concurrency python-multiprocessing python-multithreading threadpoolexecutor