Python多进程与随机函数

本文探讨了Python在Windows和Linux平台上实现多进程的差异,指出Linux使用Fork,而Windows依赖multiprocessing模块。在多进程中使用Random函数时,由于进程间随机数生成器的状态共享,可能导致同一随机序列的产生。因此,建议在每个进程开始时通过Random.seed()初始化随机数生成器以确保独立的随机序列。
摘要由CSDN通过智能技术生成

不同平台上的多进程(Windows和Linux)

廖雪峰关于Python的多进程在不同平台上的实现:链接

  • 要点:
    • Linux通过Fork实现多进程,Windows通过multiprocessing实现多进程
    • 由于Windows通过调用上述模块实现多进程,所以要通过if name == “main“:将其保护起来,否则将递归创建进程

在多进程中的Random函数

由于在Unix上每一个工作进程都继承了来自父进程的随机数产生器,因而在每一进程里会产生同一个随机数。
因而,在每个进程使用Random前,需要初始化随机数产生器 — 使用Random.seed()

What happens is that on Unix every worker process inherits the same state of the random number generator from the parent process. This is why they generate identical pseudo-random sequences.


Python中,可以使用多进程来执行for循环中的任务。引用[1]中的代码展示了一个使用多进程执行任务的示例。首先,需要导入必要的模块,包括time、random和multiprocessing。然后,定义一个任务函数task,该函数接受三个参数arg、i和string_。在任务函数中,首先生成一个0到1之间的随机值value,然后通过sleep函数阻塞一小段时间。接下来,打印arg的总和,并输出一条消息表示任务完成。在主程序中,定义了一个进程池的大小pool_num和一个参数列表args_list。然后,使用列表推导式创建了多个进程对象,并将它们放入一个进程列表processes中。接着,使用start方法启动所有进程,并使用join方法等待所有进程完成。最后,输出一条消息表示所有任务已完成。 引用[2]中的代码展示了另一个使用多进程执行for循环的示例。首先,导入必要的模块,包括multiprocessing和os。然后,定义一个工作函数work,该函数接受一个参数num。在工作函数中,打印工作的编号和当前进程的名称和进程ID。在主程序中,创建一个进程列表jobs,并使用循环创建多个进程对象,并将它们放入进程列表中。然后,使用start方法启动所有进程,并使用join方法等待所有进程完成。最后,输出一条消息表示主进程结束。 综上所述,以上两个示例展示了如何使用多进程来执行for循环中的任务。你可以根据自己的需求选择适合的方法来实现多进程的并行执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值