我之前问过Repeatedly run a function in parallel如何并行运行一个函数。我要运行的函数具有一个随机元素,其中绘制随机整数。
当我在该答案中使用代码时,它会在一个过程中(以及在运行之间,如果我添加一个外部循环以重复该过程)则返回重复的数字。例如,
import numpy as np
from multiprocessing.pool import Pool
def f(_):
x = np.random.uniform()
return x*x
if __name__ == "__main__":
processes = 3
p = Pool(processes)
print(p.map(f, range(6)))
返回
[0.8484870744666029, 0.8484870744666029, 0.04019012715175054, 0.04019012715175054, 0.7741414835156634, 0.7741414835156634]
另一次奔跑可能会给与>
[0.17390735240615365, 0.17390735240615365, 0.5188673758527017, 1.308159884267618e-08, 0.09140498447418667, 0.021537291489524404]
似乎正在使用一些内部种子-我如何生成类似于
np.random.uniform(size=6)
请返回的随机数?
我之前曾问过关于如何并行运行函数的问题,反复并行运行函数。我要运行的函数具有一个随机元素,其中绘制随机整数。当我...
Same output in different workers in multiprocessing表示种子需要包含在函数中。 Python multiprocessing pool.map for multiple arguments提供了一种将多个参数传递给Pool
的方法-一个用于重复,一个用于种子列表。