首页 > 解决方案 > 多处理帮助。BrokenProcessPool 错误

问题描述

我正在尝试学习python中多处理的基础知识,并在网上找到了我想练习的以下示例。

import concurrent.futures
import time

def do_something(seconds):    
    print(f' Sleeping {seconds} seconds')
    time.sleep(seconds)
    return f'Done Sleeping {seconds}'

with concurrent.futures.ProcessPoolExecutor() as executor:
    f1 = executor.submit(do_something, 1)
    print(f1.result())

相当简单,我知道。但是,由于某种原因,当我尝试运行它时,出现以下错误。

回溯(最近一次通话最后):

文件“”,第 19 行,在 print(f1.result())

文件“C:\Anaconda3\lib\concurrent\futures_base.py”,第 432 行,结果返回 self.__get_result()

文件“C:\Anaconda3\lib\concurrent\futures_base.py”,第 384 行,在 __get_result 中引发 self._exception

BrokenProcessPool:进程池中的一个进程在 future 正在运行或挂起时突然终止。

知道是什么原因造成的吗?

标签: pythonmultiprocessingpython-multiprocessing

解决方案


您可能想检查未来是否已经完成:

if f1.done():
    print(f1.result())

推荐阅读