所有池进程都为随机函数提供相同的输出

时间:2019-02-12 15:31:35

标签: python multiprocessing python-3.5 pool

我正在为许多轨迹运行markov链,并尝试将其并行以加快运行时间。

每次我运行代码时,系统的初始状态都应该是随机的,并且转换是基于取决于当前状态的概率的,每次运行时都会导致不同的最终结果,这就是我运行它时发生的情况不平行。

我尝试使用种子将结果随机化,但没有成功。我知道输入函数的参数与调用函数分开是导致重复的原因,但我一直在努力寻找解决方法。

s = 50 

result004 = pool.apply_async(long_runs,(1,10,0.4,s,s,5,1,None,'Gamma'))

result008 = pool.apply_async(long_runs,(1,10,0.4,s,s,5,1,None,'Gamma'))

result01 = pool.apply_async(long_runs,(1,10,0.4,s,s,5,1,None,'Gamma'))

result02 = pool.apply_async(long_runs,(1,10,0.4,s,s,5,1,None,'Gamma'))


answer1 = result004.get()

answer2 = result008.get()

answer3 = result01.get()

answer4 = result02.get()

产生四个相同的输出:

  

([[6],[1],[3],[0、0、4、0、0、2、2、0、0、0],[0、0.6、0.6、0.8,   0.4、0.8、0.6、0.6、0.4、0.6],...

     

([[6],[1],[3],[0、0、4、0、0、2、2、0、0、0],[0、0.6、0.6、0.8,   0.4、0.8、0.6、0.6、0.4、0.6],...

     

([[6],[1],[3],[0、0、4、0、0、2、2、0、0、0],[0、0.6、0.6、0.8,   0.4、0.8、0.6、0.6、0.4、0.6],...

     

([[6],[1],[3],[0、0、4、0、0、2、2、0、0、0],[0、0.6、0.6、0.8,   0.4、0.8、0.6、0.6、0.4、0.6],...

0 个答案:

没有答案