如何在并行进程中执行循环以使每个进程等待,直到其他进程中的所有其他循环完成一次迭代,然后将i
递增到下一次迭代?在这种情况下,每次迭代将花费不同的时间,具体取决于您生成的向量的大小,并且我希望所有循环同步地遍历迭代。
import multiprocessing
import numpy as np;
def calc(num):
for i in range(0,10):
x=np.random.rand(int(num));
y=np.random.poisson(x)
print("NUM: "+str(int(num))+" IT: " +str(i)+"\n")
return 0;
if __name__=='__main__':
pool = multiprocessing.Pool(processes=3)
for output in pool.map(calc, [1,2e3,3e6]):
print 'output:',output
谢谢!
编辑:我正在寻找的输出应该是......
NUM: 1 IT: 0
NUM: 2000 IT: 0
NUM: 3000000 IT: 0
NUM: 1 IT: 1
NUM: 2000 IT: 1
NUM: 3000000 IT: 1
NUM: 1 IT: 2
NUM: 2000 IT: 2
NUM: 3000000 IT: 2
NUM: 1 IT: 3
NUM: 2000 IT: 3
NUM: 3000000 IT: 3