[英]Python multiprocessing queue is empty
我有一个令人尴尬的并行代码,它创建一个数组列表,并且想对其进行并行化(这是我第一次使用python的多处理技术,因此我仍在掌握这些概念)。 runNramps(* args)返回五个数组t1,c1,e1,m1和d1。 我想在多个线程中运行它,并将所有作业的答案结合在一起。
这是我试图通过在多个进程中运行来并行化的代码。 我的作业似乎可以执行并正确关闭,但是队列为空,queue.get()不返回任何内容。 我想我没有将所有输出合并在一起的方法,但是我在SO / google上找不到任何好的示例。
这是我的代码的线程版本(我想对上一个函数进行最小的更改,然后多次调用,将结果连接到一个数组中)。
def runPramps(numramps,rmpslope,nframes,cosmag=0,method='2pt',thresh=1.0):
output = mp.Queue()
processes = [mp.Process(target=runNramps, args=(numramps,rmpslope,nframes,cosmag,method,thresh)) for x in range(4)] #4 processes for example
for p in processes:
p.start()
print "started", p
for p in processes:
p.join()
print 'ended',p
results = output.get(False) #it hangs here
return results
我确定自己正在运行并结束进程,因此我有一个小错误/误解。
非常感谢您的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.