python中的多处理[破池进程]
Posted
技术标签:
【中文标题】python中的多处理[破池进程]【英文标题】:Multiprocessing in python [broken pool process] 【发布时间】: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),也会发生这种情况。
这里也一样。正常工作。
【参考方案1】:
看起来我在使用 Jupyter 笔记本,这是问题所在。我刚刚阅读了文档中的一行,“main 模块必须可由工作子进程导入。这意味着 ProcessPoolExecutor 将无法在交互式解释器中工作”。
【讨论】:
以上是关于python中的多处理[破池进程]的主要内容,如果未能解决你的问题,请参考以下文章
Keras + Tensorflow 和 Python 中的多处理