unix/linux分布式进程

本文详细介绍了如何使用Python的multiprocessing模块实现分布式进程,并通过队列管理进行进程间通信。包括服务进程与客户端进程的设置,以及如何通过网络进行数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 服务进程:

from multiprocessing.managers import BaseManager
import Queue,time,random
queue=Queue.Queue()
class QueueManager(BaseManager):
	pass
QueueManager.register('get_queue',callable=lambda:queue)
m = QueueManager(address=('', 5000), authkey='abc')
m.start()
task_queue = m.get_queue()
for i in range(10):
	n=task_queue.get()
	print n
m.shutdown()

二:分布进程

from multiprocessing.managers import BaseManager
class QueueManager(BaseManager):
	pass
QueueManager.register('get_queue')
m = QueueManager(address=('127.0.0.1',5000),authkey='abc')
m.connect()
result_queue=m.get_queue()
for i in range(10):
	result_queue.put(i)
print 'work exit'

三代码讲解:


Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。一个服务进程可以作为调度者,将任务分布到其他多个进程中,依靠网络通信。由于managers模块封装很好,不必了解网络通信的细节,就可以很容易地编写分布式多进程程序。

服务进程通过把队列queue放到manager中,暴漏在网络上,绑定端口5000,验证码‘abc’,进行监听,客户机器的进程交互。

客户进程通过QueueManager.register获得queue,m = QueueManager(address=('address',5000),authkey='abc'),连接对应的服务进程地址。

连接成功后就可以进行进程间的交互了。


四:运行结果如图




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值