我已经编写了一个程序来使用多处理python包中的“Pool”,但它一直挂在内核上(顺便说一下,我在使用Jupyter和Anaconda)
我试着从导入的包中使用一个函数,比如“math”,它工作得很好,但是,当我使用在同一个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
不在主函数的本地范围内,它在它上面。把它放进去就可以了。在还要考虑
map
正在获取iterable并在进程之间分配它,本质上它正在为您执行for
循环。因此,您可以直接访问x。在最后,使用
with
作为上下文管理器确保池在完成时关闭。[docs]编辑:我编辑并测试了上述代码,我的代码发送正确的值并正确关闭。在
此代码在Spyder 3.2.6和标准终端中也适用。两个片段都结束得很好,不要挂在我的机器上。在
^{pr2}$相关问题 更多 >
编程相关推荐