分部式进程

Python之Ansible Ansible简介 Ansible是一个配置管理和配置工具,类似于Chef,Puppet或Salt 这是一款很简单也很容易入门的部署工具,它使用SSH连接到服务器并运行配置好的任务 服务器上不用安装任何多余的软件,只需要开启ssh,所有工作都交给client端的ansible负责 安装ansible 在线安装 [root@localhost ~]# yum install -y ansib... 阅读详情

分部式进程是指将Process进程分布到多台机器上,充分利用多台机器的性能完成复杂的任务。

分布式进程在Python中依然要用到multiprocessing模块。multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。可以写一个服务进程作为调度者,将任务分布到其他多个进程中,依靠网络通信进行管理。

创建分布式进程的步骤:

1、建立队列Queue,用来进行进程间的通信。服务进程创建任务队列task_queue,用来作为传递任务给任务进程的通道;服务进程创建结果队列result_queue,作为任务进程完成任务后回复服务进程的通道。在分布式多进程环境下,必须通过由Queuemanager获得的Queue接口来添加任务。

2、把第一步中建立的队列在网络上注册,暴露给其他进程(主机),注册后获得网络队列,相当于本地队列的映像。

3、建立一个对象(Queuemanager(BaseManager))实例manager,绑定端口和验证口令。

4、启动第三步中建立的实例,即启动管理manager,监管信息通道。

5、通过管理实例的方法获得通过网络访问的Queue对象,即再把网络队列实体化成可以使用的本地队列。

6、创建任务到“本地”队列中,自动上传任务到网络队列中,分配给任务进程进行处理。

例子:

import random
import time
from multiprocessing.managers import BaseManager
from queue import Queue

# 第一建立队列用来存放任务和结果
task_queue = Queue()
result_queue = Queue()


class Queuemanager(BaseManager):
    pass


# 第二步注册队列在网络,利用register方法,callable参数关联Queue对象,将Queue对象在网络中暴露
Queuemanager.register('get_task_queue', callable=lambda: task_queue)
Queuemanager.register('get_result_queue', callable=lambda: result_queue)

# 第三步绑定端口8001,设置验证口令
manager = Queuemanager(address=('', 8001), authkey='vfast')

# 第四步启动管理,监听信息通道
manager.start()

# 第五步通过管理实例的方法获得通过网络访问的Queue对象
task = manager.get_task_queue()
result = manager.get_result_queue()

# 第六步添加任务
for url in ['ImageUrl_' + i for i in range(10)]:
    print('put task %s ...' % url)
    task.put(url)

# 获取返回结果
print('try get result ...')
for i in range(10):
    print('result is %s ' % result.get(timeout=10))

# 关闭管理
manager.shutdown()

任务进程步骤:

1、使用QueueManager注册用于获取Queue的方法名称,任务进程只能通过名称在网络上获取Queue

2、连接服务器,端口和验证口令注意保持与服务进程中完全一致。

3、从网络上获取Queue,进行本地化

4、从task队列获取任务,并把结果写入result队列

例子:

import time
from multiprocessing.managers import BaseManager


class QueueManager(BaseManager):
    pass


# 等一步使用QueueManager注册用于获取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, 8001), authkey='vfast')
# 从网络连接
m.connect()

# 第三步获取Queue对象
task = m.get_task_queue()
result = m.get_result_queue()

# 第四步从task队列获取任务,并把结果写入result队列
while (not task.empty()):
    image_url = task.get(True, timeout=5)
    print('run task download %s ...' % image_url)
    time.sleep(1)
    result.put('%s --->success' % image_url)

# 处理结束
print('worker exit.')

 

来源:Python爬虫开发与项目实战

 

【YOLOv8实战】从零构建番茄成熟度智能检测GUI系统【附完整工程】 本文详细介绍了从零构建基于YOLOv8的番茄成熟度智能检测GUI系统的完整实战流程。内容涵盖环境搭建、数据集准备、模型训练调优,并重点讲解如何使用PyQt5开发图形界面,最终将项目打包为可执行文件,实现AI模型从训练到桌面应用落地的完整工程闭环。 阅读详情

相关推荐

审稿人看了直呼内行:多组学整合分析——科研小白进阶之路

多组学,多平台分析解决方案

pysonger的博客 3944

Ansible 开发实战:多个TaskQueueManager并行运行时本地临时目录丢失的问题

(本文基于Ansible 2.7) TaskQueueManager是Ansible调度play的基本执行单元,如果有多个TaskQueueManager并行运行,并且按照ansible官方给出的API示例清理本地的临时目录: shutil.rmtree(C.DEFAULT_LOCAL_TMP, True) 可能会造成FileNotFoundError FileNotFoundError: [...

三苦庵笔记 1552

从零到一:Cadence AC仿真中的运放性能参数深度解析与实战避坑指南

本文深度解析Cadence AC仿真中运放性能参数的精确测量方法,包括开环增益、带宽和相位裕度等关键指标。通过实战案例分享常见设置错误的避坑技巧,帮助工程师提升设计成功率和仿真效率,特别针对全差分运放和工艺角分析提供专业指导。

www00的博客 290

多线程 + 阻塞式队列 + 实现url地址边组装边下载的高效任务处理

场景:我有一大堆url,而且每个url都是一个图片的请求地址,比如,谷歌的18级别的郑州地图切片的资源请求地址如下http://www.google.cn/maps/vt?lyrs=s@781&gl=cn&&x=214237&y=104408&z=18http://www.google.cn/maps/vt?lyrs=s@781&gl=cn&...

Appleyk的专栏 8935

人民网留言数据爬取

起因是要做一个LDA主题分析的实践案例,需要数据来源,人民网的留言数据特别的适合,想着能不能用人民网留言数据来做一个LDA,种种原因还是放弃了,但是第一次弯弯绕绕地通过爬虫拿到了数据,还是想记录一下。值得说明的是,这篇博客写于2025年11月9日,其中的加密逻辑可能会随着时间而变动。

Phoenix1st的博客 1021

USB通讯速度翻倍秘诀:手把手教你用WinUsb替代HID协议(附Zadig驱动配置图解)

本文详细介绍了如何通过WinUsb技术替代传统HID协议,实现USB通讯速度的显著提升。从技术对比、实现原理到Zadig驱动配置图解,手把手教你完成免驱高速通讯方案,适用于数据采集、固件升级等场景,实测速度可达HID协议的2倍以上。

weixin_29168675的博客 132

手把手教你在python中运行ansible-playbook

关于什么ansible,我这里就不做科普了,总之一句话,要做分布式系统的运维,实现批量系统配置、批量程序部署、批量运行命令等功能,ansible就是一大杀器,能令你事半功倍。 但作为一个cli工具,其使用场景还是受cli的限制,无法实现运行过程中更深入的交互和逻辑控制。ansible本身是用python做的,所以实际上是和python的脚本控制是无缝链接的,可以在python中直接使用。但怎奈关于这部分的内容,官网文档中本身就少得可怜,互联网上也少有关于这一块的介绍,所以这个博文试着抛砖引玉,为大家做个指

点火三周的专栏 1万+

usb设备的定位信息获取

一个usb hub有20个口,每个口有一个标号,那么如果一个为X的标号插入了一个android设备,如何通过函数,得到这个X,代码实现如下,获取了location, 得到类似 Port_#0002.Hub_#0003 的字符串,然后,要对应一个表。

babytiger的专栏 2106

Python分布式进程使用(Queue和BaseManager使用)

分布式进程 需要模块 multiprocessing和queue模块 使用BaseManager创建分布式管理器 使用Queue创建队列,用于多个进程之间的通信 分布式进程原理 managers子模块支持把多个进程分布到多台机器上 可以写一个服务进程作为调度者,将任务分布到其它多个进程中,然后通过网络通信进行管理 比如爬取图片:一般一个进程负责抓取图片的地址,将地址放在Queue(容器)队列...

Python美丽星球--微信(Felixzfb) 1万+

一层一责,一聚合一包:DDD分层架构下的微服务代码模型、三重边界与服务数据协作

领域模型画得再清楚,落不进代码也是空谈。本文以一个可运行的客户中心微服务为线索,先对比整洁架构、六边形架构与DDD分层架构,指出三者共同守护的那条隔离核心业务的红线;再把DDD分层落成四个一级目录、以聚合为单位分包、一个聚合一个仓储的代码模型,拆解实体、聚合根、值对象、领域事件、领域服务与仓储的设计要点;随后厘清逻辑、物理、代码三重边界,并用检查器实测:干净代码零越界,拆出积分聚合时领域代码无需改动;注入九处越界后,必须先重构才能拆分。最后梳理服务调用三场景与PO、DO、DTO、VO的协作。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 177万+

人工智能混合编程实践:C++调用封装好的DLL进行异常检测推理

C++、Python、ONNX、人工智能、异常检测、Anomalib 2.1.0

FriendshipTang的博客 170

【亲测免费】 PM2离线安装新选择:专为Windows用户的贴心解决方案

PM2离线安装新选择:专为Windows用户的贴心解决方案 【下载地址】PM2Windows离线包第一部分 PM2 Windows 离线包(第一部分)此资源提供了PM2的Windows平台离线安装包的第一部分 项目地址: http...

gitblog_09805的博客 1148

【2026年华为暑期实习(AI)-6月3日-第一题- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要: 本文探讨了深度学习与计算机科学中的多个关键概念和技术,包括CUDA双缓冲技术、神经网络训练问题、优化算法、概率模型、Transformer架构特性、量化技术、损失函数选择等。通过20道选择题和多项选择题,涵盖了梯度消失/爆炸、神经元死亡、牛顿迭代法、朴素贝叶斯分类、Adam优化器、KV Cache压缩等核心知识点。特别关注了大模型训练中的计算效率、数值稳定性问题,以及实际应用场景如客服Agent的记忆机制优化。题目设计既考察基础理论(如概率分布、指数分布特性),又结合前沿技术(如MoE架构、注意

m0_73659489的博客 81

用华为ENSP模拟企业分部组网:从Telnet管理到路由策略的完整实验手册

本文提供了一份基于华为ENSP模拟器的企业分部网络完整实验手册。内容涵盖从基础拓扑搭建、使用IS-IS高效部署分部内部路由,到通过BGP路由策略实现总部与分部互联及精细访问控制,并详细介绍了基于AAA的集中式Telnet管理方案,旨在为网络工程师提供一套可验证、可复用的实战部署与排错指南。

smartcontract5的博客 646

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

项目实践:搭建企业总部和分部的网络 包学包会,手拿把掐

本项目构建企业总部 - 分部 - 骨干网一体化专网,采用 OSPF(多进程)与 BGP 协同组网,部署双出口冗余与骨干网双联路,实现私网全互联。通过环回建邻、AS 号允许重复、BGP 优先级调整解决路由问题,结合差异化流量调度(业务 / 工程部路径分流)与 OSPF Type-1 重发布,保障负载均衡与路径一致。统一策略与开销优化简化运维,打造安全高效的跨区域网络,支撑企业数字化协同与业务扩展。

2401_84797661的博客 1085

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

德银澳洲分部裁员规模多大?这将怎样冲击当地金融机构竞争格局

德银澳洲分部裁员影响自身运营,冲击当地金融格局,涉及人员规模、业务调整,还会改变与其他金融机构竞争态势。

股票程序化接口 460

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

为公司网络,其中包括公司总部、公司分部以及公司骨干网

7.R1、R2、R5、R6、R7、R8、R9、R10需要配置环回接口,环回接口P为设备名数字号,掩码为32,例R2的环回接口为2.2.2.2/32。4.整张网络中,运行 OSPF协议或者BGP协议的设备,其Router-id值为设备名数字号,例如R1的Router-id为1.1.1.1。、为保障公司网络连通性,骨干网络考虑设备冗余操作,连接总部使用双路由器,骨干网络部分路由器之间使用双链路路方式。6.IBGP部分使用环回建立邻居,EBGP部分使用直连链路建立邻居,所有运行BGP的设备都需要建立邻居.

LongHongYu908的博客 357

linux进程分部内存,栈大小和内存分部问题

栈大小是有默认值的,如果申请的临时变量太大的话就会超过栈大小,造成栈溢出。编译期限制栈大小,和系统限制栈深度根本是两回事。系统限制栈深是限制进程主线程的栈深,限制的是整个函数调用链的最大栈深,这个栈深是函数调用链上各个函数栈帧大小之和。编译期限制栈大小是限制单个函数栈帧的大小。一、修改栈大小栈的大小可以修改的。在应用程序我们经常需要定义大的数组,数组定义成局部变量非静态变量,那么数组就会在栈上分配...

weixin_32424555的博客 686

机网络分部:构建数字世界的桥梁基石

这种层次分明的设计,使得网络能够灵活应对不同规模和需求的应用场景,无论是大型企业的数据中心,还是家庭的小型网络,都能在其架构下高效运转。入侵检测系统则像敏锐的侦察兵,时刻警惕着网络中的异常行为,一旦发现可疑情况,便及时发出警报并采取相应措施,保护着我们的网络世界免受恶意攻击和数据泄露的威胁。而网络分部中的路由策略更是精妙绝伦。它以其高效的数据传输、精妙的架构设计、智能的路由策略以及可靠的安全保障,为我们构建起了一个便捷、安全的网络环境,让我们能够在这个虚拟的数字世界里自由驰骋,尽情探索无尽的可能。

f2801225266的博客 312

Linux进程学习【进程地址】

举个例子,如果需要将桌子划分为两块该如何划分,假设桌子长度为100厘米。我们可以将桌子划分为左边区域和右边区域,左边区域为[1,50],右边区域为[50,100]。用计算机语言描述则可以通过两个结构体来描述,一个描述区域宽度,一个描述哪个区域。int start;int end;//me//同桌地址空间本质就是内核中的一个结构体对象叫mm_struct。页表是操作系统用来管理虚拟地址和物理地址之间映射的一个数据结构。

2401_83603768的博客 1381

OSPF多进程重发布实验

一.实验拓扑 二.实验要求 1.分部办公路由正常情况走办公路由器,出现异常走业务路由。 2.分部业务路由正常情况走业务路由器,出现异常走办公路由。 三.实验配置思路 1.R1-R4作为核心层,启用OSPF进程1,设置为 area 0. 2.R3-R7作为汇聚层,启用OSPF进程2,设置为 area 1. 3.在R3和R4做OSPF重发布,采用router-policy路由策略,干涉OSPF选路。 4.在R3上抓取总部办公路由,加大COST值,在进程2引入进程1时调用, 在R4上抓取分部办公路由,加大COS

m0_50911938的博客 1290

MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult

导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可; 优点:可设置丰富的EXCEL格式,缺点:需要依赖EXCEL组件,且EXCEL进程在服务器中无法及时关闭,以及服务器上会存留大量的不必要的XLS文件; 2.设置输出头为:application/ms-excel,再输出...

weixin_30301183的博客 78

css返回数据到html,MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult_html/css_WEB-ITnose...

导出EXCEL方法总结MVC导出数据到EXCEL的方法有很多种,常见的是:1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可;优点:可设置丰富的EXCEL格式,缺点:需要依赖EXCEL组件,且EXCEL进程在服务器中无法及时关闭,以及服务器上会存留大量的不必要的XLS文件;2.设置输出头为:application/ms-excel,再输出拼接的HTML ...

weixin_39870092的博客 189
上一篇: 协程
下一篇: socket模块
linuxvfast
博客等级 码龄10年 6粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值