我想问如何使用Python来做到这一点?也许通过
multiprocessing
模块或 multiprocessing.Pool
?
提前感谢您的回答。
concurrent.futures
来完成此操作。当您获取 future 的值时,如果子线程/进程出现异常,则会在获取 future 结果的线程中引发异常。
ProcessPoolExecutor
,但ThreadPoolExecutor
也有效。您可以捕获异常并继续处理,如下所示:
import concurrent.futures
import time
def task(n):
if n == 5:
raise ValueError('5 exception')
else:
time.sleep(2)
return n
if __name__ == '__main__':
executor = concurrent.futures.ProcessPoolExecutor(max_workers=10)
futures = [executor.submit(task, value) for value in range(10)]
for future in futures:
try:
print(future.result())
except ValueError as e:
print(e)
输出:
0
1
2
3
4
5 exception
6
7
8
9