我有以下情况,我在for循环中创建一个池,如下所示(我知道这不是很优雅,但我必须这样做,因为酸洗的原因)。假设pathos.multiprocessing
等同于python的multiprocessing
库(因为它是由一些与此问题无关的细节决定的)。
我要执行以下代码:
self.pool = pathos.multiprocessing.ProcessingPool(number_processes)
for i in range(5):
all_responses = self.pool.map(wrapper_singlerun, range(self.no_of_restarts))
pool._clear()
现在我的问题是:循环成功地运行了第一个迭代。但是,在第二次迭代时,算法突然停止(没有完成pool.map
操作。我怀疑僵尸进程是生成的,或者该进程不知何故是switched
。下面你将找到我迄今为止所做的一切。在
上面的代码在我的mac上运行得非常好。但是,当我把它上传到具有以下规格的集群上时,我得到的错误是它在第一次迭代后卡住了:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"
这是the link to the pathos'多处理库文件是
我假设你试图通过某个函数调用这个函数,这不是正确的使用方法。在
你需要把它包起来:
如果你不这样做,它会继续创建自己的副本,并开始将其放入堆栈中,最终将填充堆栈并阻止所有内容。它在mac上运行的原因是它有fork而windows没有。在
相关问题 更多 >
编程相关推荐