随机数和悲情多处理



我想知道是否有一种推荐的方法在pathos.multiprocessing.ProcessPool中使用并行映射功能来处理涉及随机数生成的函数,

def f(x):
return x*np.random.rand()
pool = pathos.multiprocessing.ProcessPool(nodes=4)
results = pool.map(f,np.linspace(0,1,11))

我怀疑我可以做一些简单的事情,比如在f函数中添加np.random.seed(),但理想情况下,我会喜欢一些可重复性。有没有办法只为池中的每个工作线程分配一个不同的已知种子,然后执行映射?

NumPy 文档包括一个示例,说明如何使用多个进程来减少生成随机数的时间。

多线程生成。

本质上,您为每个进程分配一个不同的 PRNG,基于公共种子进行初始化,将数组划分为块,将每个块分配给一个进程,并让每个进程用随机数填充其分配的块。 该示例(在撰写本文时(使用 PCG 并将 PRNG 向前跳转,为每个过程形成不同的数字流。 (有关 NumPy 中支持随机数流的不同方式,请参阅"并行随机数生成"。 另请参阅我的"播种多个进程"部分。

最新更新