From 25eff6c2fd10d2e0016eaf296a4efbdb289c7f2d Mon Sep 17 00:00:00 2001 From: ipcjs Date: Fri, 7 Oct 2016 05:40:49 +0800 Subject: [PATCH] Fix #3 --- samples/multitask/task_master.py | 55 +++++++++++++++++++------------- samples/multitask/task_worker.py | 2 +- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/samples/multitask/task_master.py b/samples/multitask/task_master.py index c01bf71b..8eadbfb2 100755 --- a/samples/multitask/task_master.py +++ b/samples/multitask/task_master.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import random, time, queue +import random, time, queue, os from multiprocessing.managers import BaseManager # 发送任务的队列: @@ -14,25 +14,34 @@ class QueueManager(BaseManager): pass # 把两个Queue都注册到网络上, callable参数关联了Queue对象: -QueueManager.register('get_task_queue', callable=lambda: task_queue) -QueueManager.register('get_result_queue', callable=lambda: result_queue) -# 绑定端口5000, 设置验证码'abc': -manager = QueueManager(address=('', 5000), authkey=b'abc') -# 启动Queue: -manager.start() -# 获得通过网络访问的Queue对象: -task = manager.get_task_queue() -result = manager.get_result_queue() -# 放几个任务进去: -for i in range(10): - n = random.randint(0, 10000) - print('Put task %d...' % n) - task.put(n) -# 从result队列读取结果: -print('Try get results...') -for i in range(10): - r = result.get(timeout=10) - print('Result: %s' % r) -# 关闭: -manager.shutdown() -print('master exit.') +def lambda_task_queue(): return task_queue +def lambda_result_queue(): return result_queue + + +def main(): + QueueManager.register('get_task_queue', callable=lambda_task_queue) + QueueManager.register('get_result_queue', callable=lambda_result_queue) + # 绑定端口5000, 设置验证码'abc': + manager = QueueManager(address=('127.0.0.1' if os.name == 'nt' else '', 5000), authkey=b'abc') # win*下host不能为'' + # 启动Queue: + manager.start() + # 获得通过网络访问的Queue对象: + task = manager.get_task_queue() + result = manager.get_result_queue() + # 放几个任务进去: + for i in range(10): + n = random.randint(0, 10000) + print('Put task %d...' % n) + task.put(n) + # 从result队列读取结果: + print('Try get results...') + for i in range(10): + r = result.get(timeout=10) + print('Result: %s' % r) + # 关闭: + manager.shutdown() + print('master exit.') + + +if __name__ == '__main__': + main() diff --git a/samples/multitask/task_worker.py b/samples/multitask/task_worker.py index a5d0097e..23eb349e 100755 --- a/samples/multitask/task_worker.py +++ b/samples/multitask/task_worker.py @@ -30,7 +30,7 @@ class QueueManager(BaseManager): r = '%d * %d = %d' % (n, n, n*n) time.sleep(1) result.put(r) - except Queue.Empty: + except queue.Empty: print('task queue is empty.') # 处理结束: print('worker exit.')