多处理器不输出任何内容



我正试图在池中创建一个池来并行化for循环。我试着这样做,看看它是否比只创建一个池就运行for周期更快。我的问题是,我写的代码似乎从来没有运行完,我不太明白为什么这是代码:

import numpy as np
import multiprocessing as mp
import time
cpus = mp.cpu_count() - 1
def f(x):
lista = list(pool.map(time.sleep, [1,2,3] * x))
print('done')
return lista
pool = mp.Pool(cpus)
lista2 = pool.map(f, range(2))
pool.close()
pool.join()

从文档:"注意,池的方法应该只由创建它的过程使用;

https://docs.python.org/3.4/library/multiprocessing.html#module-多访问.pool

还要注意,Pool启动的进程是守护进程,不允许有自己的子进程。这也许可以解释为什么您会遇到死锁。根据这篇博客文章,你应该看到一个例外,我不知道你为什么没有经历:https://blog.mbedded.ninja/programming/languages/python/python-multiprocessing/

相关内容

最新更新