【发布时间】:2018-06-04 07:36:21
【问题描述】:
我观察到在 python 中使用多处理之前设置随机种子会导致奇怪的行为。
在 python 3.5.2 中,仅使用 2 或 3 个内核,使用的 CPU 百分比很低。 在 python 2.7.13 中,所有请求的内核都以 100% 使用,但代码似乎永远不会完成。当我删除随机种子的初始化时,并行化工作正常。
即使在并行化函数中没有明确使用 random,也会发生这种情况。我现在假设种子是在进程之间共享的,这会阻止多处理的顺利运行,但是有人可以提供正确的答案吗?
我已经在 Linux 上运行了代码,这里是一个最小的代码示例:
from multiprocessing import Pool
import numpy as np
import random
random.seed = 2018
NB_CPUS = 4
def test(x):
return x**2
pool = Pool(NB_CPUS)
args = [np.random.rand() for _ in range(100000)]
results = pool.map(test, args)
pool.terminate()
results[-5:]
【问题讨论】:
标签: python python-3.x random python-2.x python-multiprocessing