我正在研究一组计算机,最近开始使用python进行并行编程。
我目前的理解是:mpi4py有助于管理不同节点之间的工作,多处理管理节点核心中的工作。
我根据运行的proc数量将一个大的for循环划分为
comm.Get_size() = nprocs
然后尝试通过节点的cpu_count生成进程池,然后让它们工作。代码如下:
if rank == proc:
global output_dictionary
output_dictionary = {}
p=Pool(processes=cpu_count())
print "rank", rank, "started backpropagating. Async mapping..."
results = []
for key in serialize_and_divide(n_muscles,n_mn,rank,nprocs):
r = p.apply_async(calc_neuronij_grad,key,callback=append_grads_list)
results.append(r)
for r in results:
r.wait()
p.close()
p.join()
我的问题是,当代码到达p = Pool(processes = cpu_count())时,它会生成错误"无法分配内存"。 Traceback与Python cannot allocate memory using multiprocessing.pool相同,但解决方案没有帮助。
赞赏任何提示/帮助/解释