最近一直跟着廖大在学Python,关于分布式进程的小例子挺有趣的,这里做个记录。
分布式进程
Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。一个服务进程可以作为调度者,将任务分布到其他多个进程中,依靠网络通信。由于managers模块封装很好,不必了解网络通信的细节,就可以很容易地编写分布式多进程程序。
master服务端原理:通过managers模块把Queue通过网络暴露出去,其他机器的进程就可以访问Queue了
服务进程负责启动Queue,把Queue注册到网络上,然后往Queue里面写入任务,代码如下:
#task_master.py
#coding=utf-8
#多进程分布式例子
#服务器端
from multiprocessing.managers import BaseManager
from multiprocessing import freeze_support #server启动报错,提示需要引用此包
import random,time,queue
#发送任务的队列
task_queue = queue.Queue()
#接收结果的队列
result_queue = queue.Queue()
#从BaseManager继承的QueueManager
class QueueManager(BaseManager):
pass
#win7 64 貌似不支持callable下调用匿名函数lambda,