从https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor.map中
如果一个函数调用引发异常,那么当从迭代器中检索其值时,该异常将被引发。
以下代码片段仅输出第一个异常(Exception: 1),然后停止。这是否与上述陈述相矛盾?我期望以下代码在循环中打印出所有的异常。
def test_func(val):
raise Exception(val)
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
for r in executor.map(test_func,[1,2,3,4,5]):
try:
print r
except Exception as exc:
print 'generated an exception: %s' % (exc)