【问题标题】:Multiprocessing in python [broken pool process]python中的多处理[破池进程]
【发布时间】:2022-01-08 08:07:31
【问题描述】:

我是多处理的新手,正在探索如何使用它们。正如我提到的python documentation example,我刚刚尝试了我的一个功能,但我的 jupyter notebook 给了我一个错误。可能是什么原因?

import concurrent.futures

def dummy(x):
    return x**(1/200)

def main():
    with concurrent.futures.ProcessPoolExecutor() as executer:
        x =[1,2,3,4,5,6]
        future = executer.map(dummy,x)
        for result in future:
            print(result)
if __name__ == '__main__':
    main()

错误是:我将如何解决这个问题?我有最新版本的 Python。


BrokenProcessPool:进程池中的一个进程被终止 在未来正在运行或未决时突然发生。

【问题讨论】:

  • 检查我的编辑,我准确地代表了你的代码。否则它对我来说运行得很好。我无法用您的代码重现此错误。通常,当您向池构造函数提供initializer 函数时会发生此错误,该函数在调用时引发错误。但是,如果工作进程根本无法启动(某些服务器对进程数量施加限制),或者工作进程被外部源杀死(可能是防病毒...... idk),也会发生这种情况。
  • 这里也一样。正常工作。

标签: python multiprocessing concurrent.futures


【解决方案1】:

看起来我在使用 Jupyter 笔记本,这是问题所在。我刚刚阅读了文档中的一行,“ma​​in 模块必须可由工作子进程导入。这意味着 ProcessPoolExecutor 将无法在交互式解释器中工作”。

【讨论】:

    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 2022-11-30
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2021-07-24
    • 2020-08-14
    相关资源
    最近更新 更多