python – 多处理中不同工作者的相同输出
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 多处理中不同工作者的相同输出,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1077字,纯文字阅读大概需要2分钟。
内容图文
![python – 多处理中不同工作者的相同输出](/upload/InfoBanner/zyjiaocheng/711/45ceabaf07b64b47a3022d28a23d188e.jpg)
我有一些非常简单的案例,可以将工作分解并分配给工人.我在here尝试了一个非常简单的多处理示例:
import multiprocessing
import numpy as np
import time
def do_calculation(data):
rand=np.random.randint(10)
print data, rand
time.sleep(rand)
return data * 2
if __name__ == '__main__':
pool_size = multiprocessing.cpu_count() * 2
pool = multiprocessing.Pool(processes=pool_size)
inputs = list(range(10))
print 'Input :', inputs
pool_outputs = pool.map(do_calculation, inputs)
print 'Pool :', pool_outputs
上面的程序产生以下输出:
Input : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0 7
1 7
2 7
5 7
3 7
4 7
6 7
7 7
8 6
9 6
Pool : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
为什么要打印相同的随机数? (我的机器里有4个cpus).这是最好/最简单的方法吗?
解决方法:
我想你需要在do_calculation函数中使用numpy.random.seed重新种子随机数生成器.
我的猜测是,在导入模块时,随机数生成器(RNG)会被播种.然后,当您使用多处理时,您使用已经播种的RNG分叉当前进程 – 因此,您的所有进程都为RNG共享相同的种子值,因此它们将生成相同的数字序列.
例如.:
def do_calculation(data):
np.random.seed()
rand=np.random.randint(10)
print data, rand
return data * 2
内容总结
以上是互联网集市为您收集整理的python – 多处理中不同工作者的相同输出全部内容,希望文章能够帮你解决python – 多处理中不同工作者的相同输出所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。