【问题标题】:Multiprocessing Help. BrokenProcessPool Error多处理帮助。 BrokenProcessPool 错误
【发布时间】:2020-01-03 15:26:49
【问题描述】:

我正在尝试学习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())

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

Traceback(最近一次调用最后一次):

文件“”,第 19 行,在 打印(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:进程池中的一个进程被终止 在未来正在运行或未决时突然发生。

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

【问题讨论】:

  • 我只能想象print(f1.result()) 引发了异常,例如因为f1 没有正确类型的.result,或者对.result() 的调用崩溃了。

标签: python multiprocessing python-multiprocessing


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2022-01-02
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    相关资源
    最近更新 更多