python 学习 -- 分布式进程
2016-10-23 08:34
357 查看
服务器端:
测试端:
import time,sys,queue
from multiprocessing.managers import BaseManager
class QueueManager(BaseManager):
pass
# 从网络上获取queue ,注册时候提供名字
QueueManager.register('get_task_queue')
QueueManager.register('get_result_queue')
# 连接到服务器
server_addr = '127.0.0.1'
print('Connect to server %s...' % server_addr)
m = QueueManager(address=(server_addr,5000),authkey=b'abc')
m.connect()
# 获取queue对象
task = m.get_task_queue()
result = m.get_result_queue()
for i in range(10):
try:
n = task.get(timeout=1)
print('run task %d*%d...' % (n,n))
r = '%d * %d = %d' %(n,n,n*n)
time.sleep(1)
result.put(r)
except BaseException:
print('error')
print("worker exit.")
import random,time,queue from multiprocessing.managers import BaseManager # 发送任务的队列 task_queue = queue.Queue() # 接收结果的队列 result_queue = queue.Queue() class QueueManager(BaseManager): pass # 定义一个返回task_queue的函数 def return_task_queue(): global task_queue return task_queue # 定义一个返回结果队列的函数 def return_result_queue(): global result_queue return result_queue # 测试函数 def test(): # 将两个queue注册到网络上 QueueManager.register('get_task_queue', callable=return_task_queue) QueueManager.register('get_result_queue', callable=return_result_queue) # 绑定端口,同时设置验证码 manager = QueueManager(address=('127.0.0.1', 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, 100) 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.") # main函数 if __name__=="__main__": test()
测试端:
import time,sys,queue
from multiprocessing.managers import BaseManager
class QueueManager(BaseManager):
pass
# 从网络上获取queue ,注册时候提供名字
QueueManager.register('get_task_queue')
QueueManager.register('get_result_queue')
# 连接到服务器
server_addr = '127.0.0.1'
print('Connect to server %s...' % server_addr)
m = QueueManager(address=(server_addr,5000),authkey=b'abc')
m.connect()
# 获取queue对象
task = m.get_task_queue()
result = m.get_result_queue()
for i in range(10):
try:
n = task.get(timeout=1)
print('run task %d*%d...' % (n,n))
r = '%d * %d = %d' %(n,n,n*n)
time.sleep(1)
result.put(r)
except BaseException:
print('error')
print("worker exit.")
相关文章推荐
- Python学习之分布式进程初探(1)
- python学习——分布式进程
- Python学习笔记(三十)分布式进程
- python学习(二):并行开发(线程和进程)
- Python学习进程(14)异常处理
- Python3 下分布式进程的简单应用
- python分布式进程模型
- Python爬虫学习_多进程爬取58同城
- python学习笔记 进程和线程
- python3学习笔记之多进程分布式小例子
- Python学习进程(3)Python基本数据类型
- Python进程学习
- Python线程与进程——学习笔记
- 【Python】[进程和线程]多进程,多线程,ThreadLocal,进程VS.线程,分布式进程
- Python基础-分布式进程
- Python3中的分布式进程
- python 分布式进程体验
- python学习笔记(3)-进程和线程(一)-多进程
- python多进程入门、分布式进程数据共享
- python学习笔记4:多进程和多线程的使用方法和区别