python中numpy.random.seed设置随机种子是否影响子进程
  z67waqH4oRtg 2023年11月02日 67 0

给出代码:

from multiprocessing import Process
import numpy as np


class NN(Process):
    def __init__(self, id):
        super(NN, self).__init__()
        self.id = id
    def run(self):
        super(NN, self).run()
        print(np.random.random(5))
        print(np.random.random(5))

np.random.seed(1111)
print(np.random.random(5))
print(np.random.random(5))
print("="*30)
np.random.seed(1111)

ps = [NN(i) for i in range(1)]
for p in ps:
    p.start()

for p in ps:
    p.join()

 

运行结果:

python中numpy.random.seed设置随机种子是否影响子进程_子进程

 

 ========================================

 

给出对比代码:

from multiprocessing import Process
import numpy as np
import time


class NN(Process):
    def __init__(self, id):
        super(NN, self).__init__()
        self.id = id
    def run(self):
        super(NN, self).run()
        time.sleep(10)
        print(np.random.random(5))

np.random.seed(1111)
print(np.random.random(5))

ps = [NN(i) for i in range(1)]
for p in ps:
    p.start()

np.random.seed(1111)

for p in ps:
    p.join()

 

运行结果:

python中numpy.random.seed设置随机种子是否影响子进程_python_02

 

 

-------------------------------------------------------------------

 

PS:

可以看到,在python生成多进程时会copy父进程中的numpy.random的状态,这其中也包括随机种子的状态; 如果子进程生成完成后,那么父进程中的numpy.random的状态是不会影响子进程的。

 

 

========================================================

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
z67waqH4oRtg