Python使用Manager对象实现不同机器上的进程跨网络传输数据

2016-12-11 董付国 Python小屋 Python小屋

本文主要演示不同机器上的进程之间如何通过网络进行数据交换。

(1)首先编写程序文件multiprocessing_server.py,启动服务器进程,创建可共享的队列对象。
from multiprocessing.managers import BaseManager
from queue import Queue

q = Queue()
class QueueManager(BaseManager):
    pass
QueueManager.register('get_queue', callable=lambda:q)

m = QueueManager(address=('', 30030), authkey=b'dongfuguo')
s = m.get_server()
s.serve_forever()


(2)然后编写程序文件multiprocessing_client1.py,连接服务器进程,并往共享的队列中存入一些数据。
from multiprocessing.managers import BaseManager

class QueueManager(BaseManager):
    pass
QueueManager.register('get_queue')
#假设服务器的IP地址为10.2.1.2
m = QueueManager(address=('10.2.1.2', 30030), authkey=b'dongfuguo')
m.connect()
q = m.get_queue()
for i in range(3):
    q.put(i)


(3)最后编写程序文件multiprocessing_client2.py,连接服务器进程,从共享的队列对象中读取数据并输出显示。
from multiprocessing.managers import BaseManager

class QueueManager(BaseManager):
    pass
QueueManager.register('get_queue')
m = QueueManager(address=('10.2.1.2', 30030), authkey=b'dongfuguo')
m.connect()
q = m.get_queue()
for i in range(3):
    print(q.get())


这几天在广西大学开会,附个照片吧。