在python多处理中同步并行循环

时间:2016-11-16 23:25:35

标签: python for-loop synchronization multiprocessing

如何在并行进程中执行循环以使每个进程等待,直到其他进程中的所有其他循环完成一次迭代,然后将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

0 个答案:

没有答案