当前位置: 首页 > article >正文

python学习-xx10-2进程与线程【⭐】

1进程详解与应用1、概念进程程序运行的实例执行的过程它是系统调度与资源分配基本单元比如使用python运行一个.py的过程这就是一个进程当它运行的时候系统/计算机就会为它分配相应的运行空间当它运行结束就会释放这个空间场景1.一个手机应用微信抖音浏览器淘宝游戏等2.一个PC应用浏览器办公软件游戏等为什么系统能跑这些程序我们所有的东西都运行在一个硬件CPU/内存。。。上在这之上会有一个系统Windows/Linux/MacOS那在这个系统之上会管理多个进程游戏/微信。。。这些进程之间会有时间片的概念每一个执行一段时间就会切换另一个轮流执行因为切换速度较快对于人的操作来说对它们没有影响可以在一个系统性中运行多个软件并同时运行2、进行相关知识点①进程的ID程序运行的唯一标识②Python中获取进程ID方式(os.getpid()/os.getppid())③Python中进程相关模块multiprocessingPython 多进程模块导入后可进行多进程操作让程序同时跑多个任务利用多核 CPU速度更快。3、创建进程①示例可以查看出父进程的当前进程和子进程当前进程不同②相关方法args()→ 给位置参数用按顺序传kwargs{}→ 给关键字参数用按名字传它们都是给 target 函数传参用的只是传参方式不同p.run()是使用主进程即不创建进程执行函数就在一个进程中执行4、父子进程理解子进程是父进程的拷贝子进程继承父进程的所有资源最后一句代码tmp的输出值最开始定义了一个全体变量tmp10并在子进程函数中声明为全局变量在子进程中更改tmp的值但最终父进程中的tmp值还是全局变量没有被进行修改而子进程中的tmp被修改了这说明子进程在继承父进程的所有资源后沿着子进程的路径向下走了没有对父进程进行影响父进程也在执行自己的路径只是给了子进程初始资源子进程和父进程是两个进程各存各的值5、进程应用场景使用场景并行计算某个函数执行时间过长阻塞等一个例子某函数执行过程中休眠1秒执行6次使用单进程与多进程调用对比耗时单进程的执行时间结果多进程执行的结果快了接近6倍系统的执行流程是这样的当你的程序遇到阻滞或者休眠的时候系统会把这个程序挂起直到阻滞或者休眠结束被唤醒如果有多个进程则会依次挂起多个唤醒之后再依次执行后续的工作。如果并发的话多个可以同时挂起但是如果是单程的话则会在上一个唤醒之后下一个才会被挂起。6、进程间通信父进程如何与子进程之间联系在父进程中创建了子进程那么该如何让其建立联系呢当前子进程只是父进程的一个拷贝之间没有联系如果父进程有任务要发动给子进程执行那么子进程如何接收如果子进程完成了任务那么又该如何将结果返回给父进程使用工具常用方式①消息队列from multiprocessing importQueue【⭐】在创建父进程的时候可以创建消息队列那么创建子进程时他们之间可以通过消息队列建立一个联系首先可以通过Queue这个方法创建一个消息队列父进程和子进程都可以使用它父进程可以同过put方法将一条消息放在队列中子进程可以通过get方法去获取这条消息获取消息之后再进行一个相应的工作工作完成之后再通过put的方法将结果放到队列中然后父进程通过get去获取但是一般推荐消息队列是单向的即创建消息队列Q1父进程发消息子进程收消息再创建消息队列Q2子进程发消息父进程收消息正向和逆向是通过两条队列实现的不容易引起混乱可以通过qsize方法获取消息队列中的消息数量示例主进程中创建多个子进程子进程收到消息”Q“退出②共享内存from multiprocessing importValue,Array在创建父进程的时候可以创建共享内存父进程和子进程同时可访问和修改这个共享内存中的东西不一定没有子进程都会收到消息有可能一个子进程什么消息也没有收到也有可能一个子进程收到了多个消息但退出的消息每个队列都会接收到因为每个子进程收到后都会退出不参与二次分配这是目前的一个执行结果这里是按照顺序来的但实际上系统在分配资源的时候很有可能不是按照顺序来的调度到谁了谁就执行所以Test几是不确定顺序的。那么再来看一下这些队列消息都是那些进程接收的可以看出所有的消息都让一个进程接收了注意队列参数传入的位置这里是由多个进程接收的多个进程运行并不是说你想让谁运行谁就运行的这是由系统决定的那么如何能保证他们同时收到消息呢增加时间控制让单进程休眠一下7、练习统计代码行数①单进程实现基本实现思路1.遍历目录找到Python文件2.打开文件并统计文件行数3.统计行数②多进程实现实现思路执行思路扫描目录 和 统计行数 是同时在跑的不是先扫描完再统计超级关键多进程 同时运行代码里有2 种进程主进程负责扫描目录把文件路径扔进队列10 个子进程负责从队列拿路径实时统计行数一开始就启动了 10 个统计进程这 10 个进程 马上启动立刻进入等待状态主进程开始扫描目录一边扫一边往队列扔文件只要扫描到一个.py文件就立刻扔进队列。重点子进程不会等你扫描完队列里一有文件子进程马上拿出来统计。也就是说扫描目录 和 统计行数 是 同时并行执行 的3进程池4线程5线程安全与互斥锁

相关文章:

python学习-xx10-2进程与线程【⭐】

1进程详解与应用1、概念进程:程序运行的实例,执行的过程,它是系统调度与资源分配基本单元比如使用python运行一个.py的过程,这就是一个进程,当它运行的时候系统/计算机就会为它分配相应的运行空间,当它运行…...

解放双手!明日方舟自动化助手MAA:让游戏回归乐趣的智能解决方案

解放双手!明日方舟自动化助手MAA:让游戏回归乐趣的智能解决方案 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项…...

RDK X5 量化工具链环境搭建完整指南(Ubuntu 22.04 LTS + GPU版——RTX5080)

RDK X5 量化工具链环境搭建完整指南(Ubuntu 22.04 LTS GPU版——RTX5080) 适用场景:物理机 Ubuntu 22.04 LTS NVIDIA 5080独立显卡,用于地平线 RDK X5 模型量化部署 工具链版本:OpenExplorer v1.2.8-py310 验证环境&…...

OpenUtau终极免费开源音乐合成神器:零基础打造专属虚拟歌手完整指南

OpenUtau终极免费开源音乐合成神器:零基础打造专属虚拟歌手完整指南 【免费下载链接】OpenUtau Open singing synthesis platform / Open source UTAU successor 项目地址: https://gitcode.com/gh_mirrors/op/OpenUtau 你是否曾梦想创作属于自己的虚拟歌手歌…...

GetQzonehistory:3步完成QQ空间历史说说一键导出备份指南

GetQzonehistory:3步完成QQ空间历史说说一键导出备份指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间中的珍贵回忆会随着时间流逝而消失?…...

从苹果到OPPO:一个uni-app应用的多平台商店上架全流程复盘与避坑清单

从苹果到OPPO:一个uni-app应用的多平台商店上架全流程复盘与避坑清单 当你的uni-app项目终于完成开发,准备在各大应用商店上架时,可能会发现这比开发本身还要复杂。每个平台都有自己独特的规则和要求,稍有不慎就会陷入反复修改、反…...

如何快速掌握Salt Player歌词系统:终极配置指南

如何快速掌握Salt Player歌词系统:终极配置指南 【免费下载链接】SaltPlayerSource Salt Player (A local music player trusted and chosen by hundreds of thousands of users) for Android Release, Feedback. 项目地址: https://gitcode.com/GitHub_Trending/…...

ChemCrow:如何用AI大语言模型解决化学推理难题

ChemCrow:如何用AI大语言模型解决化学推理难题 【免费下载链接】chemcrow-public Chemcrow 项目地址: https://gitcode.com/gh_mirrors/ch/chemcrow-public 传统化学研究面临的核心挑战在于如何将复杂的分子结构分析、反应预测和专利检索等任务与智能化推理相…...

从频高图到科研数据:SAO Explorer处理测高仪数据的完整避坑指南(Windows版)

从频高图到科研数据:SAO Explorer处理测高仪数据的完整避坑指南(Windows版) 电离层研究是空间物理和无线电通信领域的重要课题,而测高仪数据则是这一研究的基础原材料。对于刚接触SAO Explorer的研究者来说,从原始频高…...

保姆级教程:用Paddle Lite把YOLOv5模型塞进安卓App(附完整代码和避坑点)

从零实现YOLOv5安卓端部署:Paddle Lite实战指南与避坑大全 在移动端部署深度学习模型早已不是新鲜事,但真正要把它做到产品级可用,依然会让不少开发者头疼。想象一下这样的场景:你费尽心思训练了一个识别精度达95%的YOLOv5模型&am…...

华为智能门锁M2深度解析:680元入门级门锁,如何实现金融级安全防护?

作为CSDN技术博主,实测过多款智能门锁,发现入门级市场普遍存在“安全缩水、体验拉胯”的问题——要么指纹识别精度不足,要么防护等级不够,难以满足独居、家用等多场景需求。而今年4月上市的华为智能门锁M2,新品期15%补…...

告别密码焦虑!手把手教你用KeePass搭建个人专属密码库(附汉化与插件配置)

告别密码焦虑!手把手教你用KeePass搭建个人专属密码库 你是否经常忘记各种网站的登录密码?或者为了安全使用不同的复杂密码,结果最后自己都记不清哪个密码对应哪个网站?又或者担心把密码记录在笔记本或手机备忘录里不够安全&#…...

别慌!Elasticsearch报错‘all shards failed‘?先检查这个字段的fielddata设置

从all shards failed到精准定位:Elasticsearch字段级故障排查实战 当你面对Elasticsearch突然抛出的search_phase_execution_exception错误时,那种"所有分片都挂了"的提示往往让人心头一紧。这种报错就像医生告诉你"全身系统故障"一…...

拆解FAST-LIO2的ikd-Tree:如何用C++实现比传统方法快10倍的点云管理?

FAST-LIO2中的ikd-Tree:高性能点云管理架构深度解析 在实时SLAM系统中,点云数据的高效管理一直是制约算法性能的关键瓶颈。传统k-d树结构虽然能提供对数级别的查询效率,但在面对高频更新的点云流时,其静态特性导致的频繁重建成为性…...

告别演讲超时焦虑:PPT悬浮计时器如何让你成为时间掌控大师?

告别演讲超时焦虑:PPT悬浮计时器如何让你成为时间掌控大师? 【免费下载链接】ppttimer 一个简易的 PPT 计时器 项目地址: https://gitcode.com/gh_mirrors/pp/ppttimer 你是否曾在重要演讲中因为忘记时间而匆忙收尾?是否在课堂演示时因…...

国际阿里云实名账号云文件存储 NAS 怎么用?别把它当成“高级网盘”就完了!!!

很多人第一次看到 NAS,脑子里都会自动翻译成一句话: “哦,云上的共享文件夹。”这个理解不能说错,但如果你真把它当成一个“高级网盘”,后面大概率会一边挂载一边怀疑人生。因为阿里云国际站的 NAS,本质上不…...

3分钟搞定B站缓存视频转换:m4s-converter让你的珍藏永不丢失

3分钟搞定B站缓存视频转换:m4s-converter让你的珍藏永不丢失 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 还在为B站视频下架而烦恼…...

别再写嵌套if了!用Java 8的Comparator.thenComparing优雅搞定多级排序(附实战代码)

告别嵌套if:用Java 8链式比较器重构电商多维度排序 每次看到同事在商品管理模块写下三层嵌套的if-else排序逻辑时,我都能从他颤抖的鼠标光标感受到那份绝望。上周五深夜,当我第N次调试一个漏判了null值的比较器时,终于决定彻底革新…...

别再用Python了!Julia搭配Plots.jl,5分钟搞定科研论文里的精美图表

JuliaPlots.jl:科研图表绘制的效率革命 在数据密集型的科研工作中,可视化是成果呈现的关键环节。传统Python生态虽然成熟,但当面对动辄GB级的实验数据或复杂的多图排版需求时,许多研究者都经历过这样的困境:精心调整的…...

5分钟学会Llama Factory:可视化操作,轻松实现大模型训练与微调

5分钟学会Llama Factory:可视化操作,轻松实现大模型训练与微调 1. 为什么选择Llama Factory? 在人工智能领域,大语言模型(LLM)的训练和微调一直是技术门槛较高的工作。传统方法需要编写大量代码、处理复杂的环境配置&#xff0c…...

5分钟搭建专属视频门户:MediaCMS让媒体管理变得如此简单

5分钟搭建专属视频门户:MediaCMS让媒体管理变得如此简单 【免费下载链接】mediacms MediaCMS is a modern, fully featured open source video and media CMS, written in Python/Django and React, featuring a REST API. 项目地址: https://gitcode.com/gh_mirr…...

文件管理笔记

su 切换用户bash 执行命令shutdown -h立即关机 -r立即重启 -hxx xx分钟后自动关机文件目录操作命令cd 将当前目录切换到指定目录pwd 显示当前所处目录mkdir 创建目录tree 查看目录结构rm 直接删除目录或文件 -f 不做提示 -r 删除目录以及内文件 -v 显示删除详细过程文件操作…...

PCIe 3.0信号完整性深度优化:除了100欧姆差分阻抗,这些细节才是性能关键

PCIe 3.0信号完整性深度优化:除了100欧姆差分阻抗,这些细节才是性能关键 在高速数字电路设计中,PCIe 3.0接口的信号完整性优化一直是硬件工程师面临的挑战。虽然大多数工程师都熟悉100欧姆差分阻抗的基本要求,但真正决定系统稳定性…...

Coze平台入门指南:从零搭建你的第一个AI智能体

前言:为什么需要Coze? 大模型的能力已经足够强大,但要让它们真正“做事”——比如查天气、订机票、分析文档——还需要一套完整的基础设施。这就是Agent开发平台的价值所在。 Coze(扣子)是字节跳动推出的AI智能体开发…...

你的keystore安全吗?从JKS到PKCS12迁移,顺便搞定签名信息提取全流程

密钥库安全升级实战:从JKS迁移到PKCS12与签名信息高效提取指南 当你在终端执行keytool -list命令时,是否注意到那个刺眼的警告:"JKS密钥库使用专用格式"?这不仅仅是一个简单的提示,而是行业安全标准演进的重…...

读懂 Polkadot Fast Grants 这份罕见的诚实失败报告

原文作者:PaperMoon 团队 一、一封没有"挑战与展望"的收官信 先读原文的第一段。 “The Polkadot Fast-Grants Programme has officially closed. The remaining fund balance was insufficient to meet all outstanding obligations given market cond…...

3个步骤让MedSAM医疗影像分割模型成为你的AI诊断助手

3个步骤让MedSAM医疗影像分割模型成为你的AI诊断助手 【免费下载链接】MedSAM Segment Anything in Medical Images 项目地址: https://gitcode.com/gh_mirrors/me/MedSAM 你是一名放射科医生,面对堆积如山的CT扫描图像,需要快速准确地标注出肿瘤…...

Windhawk完全指南:免费开源Windows系统定制工具终极教程

Windhawk完全指南:免费开源Windows系统定制工具终极教程 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk Windhawk是一款完全免费开源的Windo…...

【C++/Qt】C++/Qt 实现 TCP Server:支持启动监听、消息收发、日志保存

在 Qt 网络编程里,QTcpServer 和 QTcpSocket 是最常用的一组类。单独讲 API 往往比较抽象,而如果把它们放到一个带界面的 TCP Server 小工具里,整个实现思路就会清晰很多。本文就结合一个完整的 Qt TCP 服务端模块,讲清楚一个 TCP…...

Office安装新姿势:不会写XML?用官方配置网站5分钟搞定ODT安装文件

Office 2021极简安装指南:告别XML恐惧,官方工具5分钟搞定 每次看到命令行窗口弹出,手指就不自觉地悬在键盘上方犹豫不决?面对满屏尖括号和属性的XML配置文件,感觉像在读天书?作为常年与Office打交道的技术…...