python分布式版本二分法验证
2021/8/17 17:06:25
本文主要是介绍python分布式版本二分法验证,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 思路1,master等待远端返回结果
from multiprocessing import Pool import os, time, random # 在远端执行的任务进程,,hang住等待返回 def long_time_task(ip,url): print('Run task %s-%s (%s)...' % (ip, url, os.getpid())) start = time.time() time.sleep(random.random() * 30) end = time.time() print('Task %s runs %0.2f seconds.' % (ip, (end - start))) return True # 版本验证通过返回true if __name__=='__main__': print('Parent process %s.' % os.getpid()) url_list = [1,2,3,4,5,6,7,8] # 版本list,stat[0],end[-1] p = Pool(4) # 远端执行的节点数 # 根据节点数二分法取出节点数个版本待验证 for i in range(5): p.apply_async(long_time_task, args=(i,'url:1')) # 传入ip地址,和版本url print('Waiting for all subprocesses done...') p.close() p.join() # 所有进程都完成后,根据返回结果更新二分法的start和end print('All subprocesses done.')
- 思路2,QueueManager通信
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import random, time, queue from multiprocessing.managers import BaseManager # 发送任务的队列: task_queue = queue.Queue() # 接收结果的队列: result_queue = queue.Queue() # 增加如下的函数以适应windows ,【PicklingError】 def task_queue_fun(): return task_queue def result_queue_fun(): return result_queue # return queue.Queue() # 这样不行 # 从BaseManager继承的QueueManager: class QueueManager(BaseManager): pass if __name__ == '__main__': # 把两个Queue都注册到网络上, callable参数关联了Queue对象: # 修改如下的函数,以适应windows环境 # QueueManager.register('get_task_queue', callable=lambda: task_queue) # QueueManager.register('get_result_queue', callable=lambda: result_queue) QueueManager.register('get_task_queue', callable=task_queue_fun) QueueManager.register('get_result_queue', callable=result_queue_fun) # 绑定端口5000, 设置验证码'abc': 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, 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.')
这篇关于python分布式版本二分法验证的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享