Python分布式进程
面对多任务需求的时候,thread和process都能实现相应的功能。但更推荐使用process,因为process更稳定。并且process可以在多台机器上实现分布式的应用,而多线程thread只能在一台机器上使用多个CPU。
那在Python中我们该如何使用分布式进程完成我们的需求?
Python提供了multiprocessing模块。该模块不仅提供实现多进程process,其中子模块manager还支持将多进程分布到多台机器上。
一台机器充当任务的调度者(master进程),将任务分发到不同的进程中,通过网络通信将任务分发到不同的机器上。这里我们不需要知道manager模块如何将任务进行分发,只需要知道他的用法。
现在我们需要实现一个“不断输入数字,计算得出输入数字的平方”。
如果我们不使用分布式进程,只使用单机多进程。该如何完成?
单机多进程实现
1.初始化一个队列
2.产生数字的进程(master),并将产生的数字put到全局的队列中
3.进行平方根计算的进程(worker),将计算完成的数据输出
分布式多进程实现
当我们使用分布式多进程的时候,一个队列就不能满足我们的需求,需要两个队列:masterQueue、workerQueue。我们来看一下使用分布式多进程如何完成上述需求。
1.创建master(主机)任务注册、分发进程
首先我们需要创建一个DistributedMasterProcess.py