-
Notifications
You must be signed in to change notification settings - Fork 1
/
DistributedMasterProcess.py
78 lines (59 loc) · 1.79 KB
/
DistributedMasterProcess.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
#
# _ooOoo_
# o8888888o
# 88" . "88
# (| -_- |)
# O\ = /O
# ___/`---'\____
# . ' \\| |// `.
# / \\||| : |||// \
# / _||||| -:- |||||- \
# | | \\\ - /// | |
# | \_| ''\---/'' | |
# \ .-\__ `-` ___/-. /
# ___`. .' /--.--\ `. . __
# ."" '< `.___\_<|>_/___.' >'"".
# | | : `- \`.;`\ _ /`;.`/ - ` : | |
# \ \ `-. \_ __\ /__ _/ .-` / /
# ======`-.____`-.___\_____/___.-`____.-'======
# `=---='
# .............................................
# 佛曰:bug泛滥,我已瘫痪!
#
'分布式进程,使用multiprocessing.manager模块进行多进程队列的管理'
__author__ = 'click'
__date__ = '2018/7/25 下午1:55'
import time, random, queue
# 1.导入BaseManager模块(管理Queue,注册、获取。连接master)
from multiprocessing.managers import BaseManager
# 2.创建生产队列master
masterQueue = queue.Queue()
# 3.创建消费队列,worker
workerQueue = queue.Queue()
# 4.创建manager管理queue
class QueueManager(BaseManager):
pass
# 5.使用baseManager将两个队列注册到网络上
QueueManager.register('get_master_queue', callable=lambda: masterQueue)
QueueManager.register('get_worker_queue', callable=lambda: workerQueue)
# 6.绑定网络端口5000,设置验证码'abc'
manager = QueueManager(address=('', 5000), authkey=b'abc')
# 启动queue
manager.start()
# 7.获取到注册到网络上的生产、消费队列
master = manager.get_master_queue()
worker = manager.get_worker_queue()
# 往生产队列中添加任务
for i in range(10):
n = random.randint(0, 10)
print('往master队列中添加任务 %s' % n)
master.put(n)
# 准备从消费队列中取出
print('从消费队列获取内容')
for i in range(10):
r = worker.get(timeout=10)
print('消费队列worker%s' % r)
# 关闭manger
manager.shutdown()