简单搭建分布式计算
简单 搭建 分布式计算
2023-09-14 09:05:39 时间
#主机控制代码
import multiprocessing
import multiprocessing.managers
import random,time
from multiprocessing import Queue
# 任务队列
task_queue=Queue()
# 结果队列
result_queue=Queue()
# 提供给从机调用后得到队列中的数据
# 就是接口
def return_task():
return task_queue
def return_result():
return result_queue
class QueueManager(multiprocessing.managers.BaseManager):
pass
if __name__=="__main__":
# 开启分布式支持
multiprocessing.freeze_support()
# 注册可以访问队列并得到结果的函数
QueueManager.register('get_task',callable=return_task)
QueueManager.register('get_result',callable=return_result)
manager=QueueManager(address=('192.168.72.135',8888),authkey='password'.encode('utf-8'))
manager.start()
task=manager.get_task()
result=manager.get_result()
for i in range(1000):
print('task add data')
#将任务放入队列
task.put(i)
print('watting for ____')
for i in range(1000):
#将结果从队列中取出
res=result.get()
print('get_data',res)
manager.shutdown()
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
×××××××××××××××××××××
import multiprocessing
import multiprocessing.managers
import random,time
from multiprocessing import Queue
class QueueManager(multiprocessing.managers.BaseManager):
pass
if __name__=="__main__":
# 开启分布式支持
multiprocessing.freeze_support()
# 注册可以访问队列并得到结果的函数
QueueManager.register('get_task')
QueueManager.register('get_result')
manager=QueueManager(address=('192.168.72.135',8888),authkey='password'.encode('utf-8'))
manager.connect()
task=manager.get_task()
result=manager.get_result()
for i in range(1000):
try:
#从队列中取出任务
data=task.get()
print('client_get',data)
#处理计算任务将结果放入队列中 result.put('client'+str((data+10)))
except:
pass
上面是单一任务可开启多个从机来处理数据由于每个从机取出任务后该任务就会在队列中消失
所以每个任务只能给一个从机处理所以不会造成任务重复
另外还可以定义不同算法的从机,但在此时也因该定义不同算法的主机来控制接受数据
所以有一个命令主机程序负责控制不同算法队列 该任务队列是将控制不同算法的输入队列的开启和控制每个从机的不同算法的开启 在自己本地执行接到的某一算法处理程序
控制程序和算法程序除了端口和加入队列的数据不同都是一样的
算法程序被控制程序启动 无论是主机上还是从机上
只不过是主机上是当控制程序的命令加入队列后就立即启动了所有加入队列被控制的算法程序
待每个从机从控制队列中拿到命令那个算法由自己执行后便开启了响应的算法
每个从机都有所有的算法处理程序无论是接到处理什么的任务都可以处理
且每个从机都拥有控制从机程序从控制队列中获取任务
每个算法程序独立一个端口独立一个队列对应一个独立的从机程序
队列的多样性使得 此方法 更加强大 能将多任务多机合作进行白百分百的发挥
效率一般高效
相关文章
- 一个简单的数学问题
- ceph分布式集群文件存储的简单搭建
- loadrunner的使用步骤_简单介绍一种你在家中使用过的工具
- 用keras搭建一个简单的一维卷积神经网络
- Doxygen工具简单使用
- 被妖魔化的服务发现原来这么简单
- 腾讯云域名备案详解:域名备案其实很简单,只是需要耐心
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略详解编程语言
- 简单搭建 Oracle 数据库网关(oracle数据库网关)
- Linux下搭建FTP服务器的简单步骤(linux下配置ftp)
- 使用Linux搭建FTP服务:超简单快速上手(linuxftp软件)
- 免费搭建Linux邮件系统的简单指南(免费的linux邮件系统)
- 解决MySQL卸载问题:简单易懂操作指南(mysql数据库怎么卸载)
- 搭建 Redis: 快速、简单、轻松(redis怎么搭建)
- Linux下简单上网代理设置指南(linux代理上网设置)
- Linux IP 重定向:简单指南(linuxip重定向)
- 秒懂Redis一种高性能的NoSQL数据库(简单说出什么是redis)
- 离线搭建Redis极其简单的步骤(离线搭建redis)
- 使用MySQL和XML创建表,简单高效的数据管理(mysql xml创建表)
- 揭秘Redis搭建的简单奥秘(关于redis如何搭建)
- 搭建Redis集群简单两步搞定两个节点(redis集群两个节点)
- 简单易懂,快速解读Redis配置文件(redis配置文件解析)
- 简单搭建Redis实现消息队列功能(redis连接消息队列)
- 简单掌握Redis软件的使用方法(redis软件怎么用)
- Oracle nvk 让IT更加简单(oracle nvk)
- asp事物功能简单小应用
- asp.net学习之路项目整体框架简单的搭建
- php读取mysql的简单实例