【Python】简单分布式原理
2021/7/3 17:24:14
本文主要是介绍【Python】简单分布式原理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
分布式:让多台计算机同时干活
计算1,2,3,...,10000 的平方数
原理:
代码(服务器):
#服务器端 import multiprocessing.managers #分布式进程管理器 import queue #队列 task_queue = queue.Queue() #任务队列(发出) result_queue = queue.Queue() #结果队列(返回) def return_task(): #返回任务队列 return task_queue def return_result(): #返回结果队列 return result_queue class QueueManger(multiprocessing.managers.BaseManager):#继承,进程管理共享数据 pass if __name__ == "__main__": multiprocessing.freeze_support() #开启分布式支持 QueueManger.register("get_task",callable = return_task)#注册函数给客户端调用 QueueManger.register("get_result",callable = return_result) manger = QueueManger(address=("192.168.99.1",8848),authkey=123456)#创建一个管理器,设置地址与密码 #ip地址为本机ip manger.start() #开启 task = manger.get_task() #任务队列 result = manger.get_result() #结果队列 for i in range(10000): print("压入任务队列的数据",i) task.put(i) #压入数据 print("------ 等待中 ------") for i in range(10000): res = result.get(timeout = 100) print("从客户端得到结果队列的数据-",res) manger.shutdown() #关闭服务器
客户端:
#客户端 import multiprocessing.managers #分布式进程管理器 class QueueManger(multiprocessing.managers.BaseManager):#继承,进程管理共享数据 pass if __name__ == "__main__": QueueManger.register("get_task") #注册函数调用服务器 QueueManger.register("get_result") manger = QueueManger(address=("192.168.99.1", 8848), authkey=123456) manger.connect() # 连接服务器 task = manger.get_task() # 任务 result = manger.get_result() # 结果 for i in range(10000): #time.sleep(1) try: data = task.get() #从队列中取出数据 print("客户端从任务队列中得到的数据:",data) result.put("计算完成后压入结果队列的数据:"+str(data*data)) #将计算后的数据压入队列 except: pass
运行结果(服务器端):
客户端:
这篇关于【Python】简单分布式原理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型