博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3 分布式进程(跨机器)BaseManager(multiprocessing.managers)
阅读量:4350 次
发布时间:2019-06-07

本文共 1703 字,大约阅读时间需要 5 分钟。

A机器负责发送任务和接受结果:

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
#task_master.py
import 
random,time,queue
from 
multiprocessing.managers 
import 
BaseManager
 
task_queue 
= 
queue.Queue()
result_queue 
= 
queue.Queue()
 
class 
QueueManager(BaseManager):
    
pass
 
if 
__name__ 
=
= 
'__main__'
:
    
print
(
"master start."
)
    
QueueManager.register(
'get_task_queue'
,
callable 
= 
lambda
:task_queue)
    
QueueManager.register(
'get_result_queue'
,
callable 
= 
lambda
:result_queue)
    
manager 
= 
QueueManager(address 
= 
(
'10.10.100.11'
,
9833
),authkey
=
b
'abc'
)
    
manager.start()
    
task 
= 
manager.get_task_queue()
    
result 
= 
manager.get_result_queue()
 
    
for 
in 
range
(
10
):
        
= 
random.randint(
0
,
1000
)
        
print
(
'put task %d ...' 
% 
n)
        
task.put(n)
    
print
(
'try get results...'
)
 
    
for 
in 
range
(
10
):
        
= 
result.get(timeout 
= 
100
)
        
print
(
'Result:%s' 
% 
r)
    
manager.shutdown()
    
print
(
'master exit.'
)

B机器负责处理任务和发送结果:

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
#task_worker.py
import 
sys,time,queue
from 
multiprocessing.managers 
import 
BaseManager
 
class 
QueueManager(BaseManager):
    
pass
 
QueueManager.register(
'get_task_queue'
)
QueueManager.register(
'get_result_queue'
)
 
server_addr 
= 
'10.10.100.11'
print
(
'connect to server %s...' 
% 
server_addr)
 
= 
QueueManager(address
=
(server_addr,
9833
),authkey
=
b
'abc'
)
m.connect()
 
task 
= 
m.get_task_queue()
result 
= 
m.get_result_queue()
 
for 
in 
range
(
10
):
    
try
:
        
= 
task.get(timeout 
= 
10
)
        
print
(
'run task %d * %d' 
%
(n,n))
        
= 
'%d * %d = %d' 
%
(n,n,n
*
n)
        
time.sleep(
1
)
        
result.put(r)
    
except 
Queue.Empty:
        
print
(
'task queue is empty'
)
 
print
(
'worker exit'

 

转载于:https://www.cnblogs.com/ExMan/p/10187599.html

你可能感兴趣的文章
Android_2_如何将android虚拟设备的语言设置为简体中文
查看>>
2_图像处理中正交变换的目的是什么?图像变换主要用于那些方面?
查看>>
每天一个小程序:读取txt文件存储到excel 表中
查看>>
Linux ->> scp命令复制对端机器上的文件/文件夹
查看>>
hdu1014(水~)
查看>>
BZOJ 1025: [SCOI2009]游戏
查看>>
渗透测试全套教程(从原理到实战)
查看>>
2018年研究生数学建模优秀论文汇总
查看>>
oralce查被锁的session并kill掉
查看>>
TP5使用redis
查看>>
Python题目练习(二)
查看>>
吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-plus...
查看>>
吴裕雄--天生自然 JAVASCRIPT开发学习: 类型转换
查看>>
20145202 《信息安全系统设计基础》第1周学习总结
查看>>
图——图的Dijkstra法最短路径实现
查看>>
物联网架构成长之路(8)-EMQ-Hook了解、连接Kafka发送消息
查看>>
2018-2019-1 20165234 20165236 实验二 固件程序设计
查看>>
IDEA的GUI连接数据库写入SQL语句的问题总结
查看>>
Xpath在选择器中正确,在代码中返回的是空列表问题
查看>>
leecode第一百九十八题(打家劫舍)
查看>>