manager.py
from multiprocessing.managers import BaseManager
from Queue import Queue
task_queue = Queue()
result_queue = Queue()
if __name__ == '__main__':
manager = BaseManager(address=("127.0.0.1", 3000), authkey="key")
manager.register(typeid="get_task_queue", callable=lambda: task_queue)
manager.register(typeid="get_result_queue", callable=lambda: result_queue)
manager.start()
task_queue = manager.__getattribute__("get_task_queue")() # type:Queue
result_queue = manager.__getattribute__("get_result_queue")() # type:Queue
for i in range(1, 10):
task_queue.put(i)
for i in range(1, 10):
result = result_queue.get()
print(result)
result_queue.task_done()
task_queue.task_done()
result_queue.join()
task_queue.join()
worker.py
from multiprocessing.managers import BaseManager
from Queue import Queue
if __name__ == '__main__':
manager = BaseManager(address=("127.0.0.1", 3000), authkey="key")
manager.register("get_task_queue")
manager.register("get_result_queue")
manager.connect()
task_queue = manager.__getattribute__("get_task_queue")() # type:Queue
result_queue = manager.__getattribute__("get_result_queue")() # type:Queue
while not task_queue.empty():
task = task_queue.get()
result_queue.put(task * task)
先运行manager,再运行worker。
网友评论