可以在windows下单机运行
主部分(提供服务器)
#mainfirst.py
from multiprocessing.managers import BaseManager
import Queue
queue = Queue.Queue()
class QueueManager(BaseManager): pass
QueueManager.register('get_queue', callable=lambda:queue)
m = QueueManager(address=('127.0.0.1', 50000), authkey='abc')
s = m.get_server()
s.serve_forever()
发送信号部分(发送)
#subfirst.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()
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通信(二)文件三分。提供服务部分。对本章的发送,接收部分一样有效