我正在运行一个依赖于随机性的大规模并行化进程。问题在于并行进程中的每个工作进程与父进程共享相同的随机种子,从而破坏了我运行不同随机模拟的尝试。
因此,我遇到了如何在开始时为每个工人设置不同的随机种子的问题。我目前的解决方案是去掉微秒部分time.time()
并将其转换为整数,然后再将其传递给random.seed()
. 它看起来像下面这样。有没有更好的办法?
import re
import random
import time
def set_random_seed():
seed = int(re.sub(r'[^0-9]', '', str(time.time())[-7:]))
random.seed(seed)
请参阅:https : //docs.python.org/3/library/random.html#random.seed
如果省略种子,将使用os.urandom - 如果可用。你可以打电话:
random.seed()
如果您担心不太可能os.urandom
出现不可用的情况,请在您的主流程中生成唯一的种子,并将一个种子传递给您启动的每个流程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句