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

时间:2023-03-09 20:27:58
python中的BaseManager通信(一)文件三分

可以在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通信(二)文件三分。提供服务部分。对本章的发送,接收部分一样有效