多处理“池”挂在正在运行的程序上

钱德拉·桑加拉

我已经编写了一个程序来使用多处理 python 包中的“池”,但它一直挂着内核。(顺便说一下,我正在使用 Jupyter 和 Anaconda)

我尝试使用导入包中的函数,如“数学”,它运行良好,但是,当我使用在同一个 python 文件中创建的函数时,它不起作用。

import multiprocessing as mp

def f(x):
   for i in x:
      return i+1

ar=[1,2,3,4,5]
def main():
    pool=mp.Pool(processes=4)
    pool.map(f,ar)
if __name__== '__main__':
    main()

它表明内核正在运行,但 cpu 使用率为 0%。

我的名字是迦勒

问题ar不在您的主要功能的本地范围内,而是在它之上。把它放在里面,它应该可以工作。

from multiprocessing import Pool

def f(x):
    return x+1

if __name__ == '__main__':
    ar=[1,2,3,4,5]
    with Pool(4) as p:
        print(p.map(f, ar))

还要考虑map将您的迭代器分配给整个流程,本质上它是在for为您执行循环。因此,您可以直接访问 x。

最后,with用作上下文管理器可确保您的池在完成时关闭。[文档]

编辑:我编辑并测试了上面的代码,我的发送了正确的值并正确关闭。

此代码在 Spyder 3.2.6 和标准终端中也适用于我。两个片段都正确关闭并且不会挂在我的机器上。

import multiprocessing as mp

def f(x):
    return x+1

def main():
    ar = [1,2,3,4,5]
    pool = mp.Pool(processes=4)
    print(pool.map(f, ar))

if __name__ == '__main__':
    main()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

多处理队列与池

检查Windows上是否正在运行某些exe程序

Python多处理池挂在连接处?

Python多处理池挂在连接处?

在正在运行的应用程序上更改JLabel文本

在单独的进程上运行Goroutines(多处理)

如何在事件处理程序上运行jquery脚本

Python多处理:仅一个进程正在运行

Python多处理池挂在地图调用上

挂在pool.join()上的Python多处理

如何在正在运行的heroku应用程序上更新app.json清单?

Python多重处理,池映射-如果一个正在运行,则取消所有正在运行的进程,并返回所需结果

多处理池初始化程序无法进行酸洗

NodeJS:如何在正在运行的Docker应用程序上进行NightmareJS e2e测试

Python ValueError:池未在异步多处理中运行

多处理池:Python

多处理池挂在jupyter笔记本中

多处理锁的装饰器在运行时崩溃

如何使多处理程序运行?

用正在运行的任务处理对象?

Windows 8.1上的Python多处理池仅产生一个工作程序

控制正在运行的Python进程(多处理)

当某个应用程序上正在运行某个进程时,无法使用UI自动器来给设备屏幕截图添加阴影

多处理池工作程序中的线程标识符

池多处理失败

挂在多处理队列中

一种等待当前正在运行的任务完成然后在多处理池中停止的方法

如何在正在运行的程序上显示隐藏的浏览器

如何让多处理池既不启动新进程又不终止当前正在运行的进程?