python中的BaseManager通信(一)文件三分

可以在windows下单机运行

主部分(提供服务器)

1 #mainfirst.py
2 from multiprocessing.managers import BaseManager
3 import Queue
4 queue = Queue.Queue()
5 class QueueManager(BaseManager): pass
6 QueueManager.register('get_queue', callable=lambda:queue)
7 m = QueueManager(address=('127.0.0.1', 50000), authkey='abc')
8 s = m.get_server()
9 s.serve_forever()

发送信号部分(发送)

1 #subfirst.py
2 from multiprocessing.managers import BaseManager
3 class QueueManager(BaseManager): pass
4 QueueManager.register('get_queue')
5 m = QueueManager(address=('127.0.0.1', 50000), authkey='abc')
6 m.connect()
7 queue = m.get_queue()
8 queue.put('hello')

接收信号部分(接收)

#subsec.py
from multiprocessing.managers import BaseManager
class QueueManager(BaseManager): pass
QueueManager.register('get_queue')
m = QueueManager(address=('127.0.0.1', 50000), authkey='abc')
m.connect()
queue = m.get_queue()
print queue.get()
print m.address

结果:

hello
('127.0.0.1', 50000)

运行时:不能关掉主部分(提供服务)。发送与接收无所谓先后。

还有一章是python中的BaseManager通信(二)文件三分。提供服务部分。对本章的发送,接收部分一样有效

原文地址:https://www.cnblogs.com/liunnis/p/4614947.html