gpt4 book ai didi

python - 对每个进程使用具有不同随机种子的 python 多处理

转载 作者:IT老高 更新时间:2023-10-28 20:54:52 24 4
gpt4 key购买 nike

我希望并行运行多个模拟实例,但每个模拟都有自己独立的数据集。

目前我实现如下:

P = mp.Pool(ncpus) # Generate pool of workers
for j in range(nrun): # Generate processes
sim = MDF.Simulation(tstep, temp, time, writeout, boundaryxy, boundaryz, relax, insert, lat,savetemp)
lattice = MDF.Lattice(tstep, temp, time, writeout, boundaryxy, boundaryz, relax, insert, lat, kb, ks, kbs, a, p, q, massL, randinit, initvel, parangle,scaletemp,savetemp)
adatom1 = MDF.Adatom(tstep, temp, time, writeout, boundaryxy, boundaryz, relax, insert, lat, ra, massa, amorse, bmorse, r0, z0, name, lattice, samplerate,savetemp)
P.apply_async(run,(j,sim,lattice,adatom1),callback=After) # run simulation and ISF analysis in each process
P.close()
P.join() # start processes

其中 simadatom1lattice 是传递给启动模拟的函数 run 的对象。

但是,我最近发现,我同时运行的每个批处理(即,每个 ncpus 都用完模拟运行的总 nrun 次)给出完全相同的结果.

这里有人可以指导如何解决这个问题吗?

最佳答案

只是想我会添加一个实际答案以使其他人清楚。

引用 aix 的答案 in this question :

What happens is that on Unix every worker process inherits the same state of the random number generator from the parent process. This is why they generate identical pseudo-random sequences.

使用 random.seed()方法(或 scipy/numpy 等价物)正确设置种子。另见 this numpy thread .

关于python - 对每个进程使用具有不同随机种子的 python 多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9209078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com