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

Python进程和线程——多进程

Python 的多进程编程主要指通过 multiprocessing模块实现,其核心价值在于能够​​绕过全局解释器锁(GIL)​​,实现真正的并行计算,特别适合处理 ​​CPU 密集型任务​

Python 通过 multiprocessing.Process类创建和管理进程。这里引入了一个fork语句,调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。

需要注意的是这个代码无法在Windows上正常运行

如果要启动大量的子进程,可以用进程池的方式批量创建子进程,这就是Pool

廖老师向我们解释道:

Pool对象调用join()方法会等待所有子进程执行完毕,调用join()之前必须先调用close(),调用close()之后就不能继续添加新的Process了。

请注意输出的结果,task 0123是立刻执行的,而task 4要等待前面某个task完成后才执行,这是因为Pool的默认大小在我的电脑上是4,因此,最多同时执行4个进程。这是Pool有意设计的限制,并不是操作系统的限制。如果改成:

p = Pool(5)

就可以同时跑5个进程。

由于Pool的默认大小是CPU的核数,如果你不幸拥有8核CPU,你要提交至少9个子进程才能看到上面的等待效果。

不过,很多时候,子进程并不是自身,而是一个外部进程。我们创建了子进程后,还需要控制子进程的输入和输出。

subprocess模块可以让我们非常方便地启动一个子进程,然后控制其输入和输出。

进程间通信     进程间通信是通过QueuePipes等实现的。

Process之间肯定是需要通信的,操作系统提供了很多机制来实现进程间的通信。Python的multiprocessing模块包装了底层的机制,提供了QueuePipes等多种方式来交换数据。

我们以Queue为例,在父进程中创建两个子进程,一个往Queue


文章转载自:

http://zVgjK3Bn.fwgnq.cn
http://VR8Pc3jE.fwgnq.cn
http://4UYHU4O5.fwgnq.cn
http://1zcpmH05.fwgnq.cn
http://NY7aVPBa.fwgnq.cn
http://RZ3TsYWw.fwgnq.cn
http://XwTztbqm.fwgnq.cn
http://lptEXL6z.fwgnq.cn
http://kwLqrA1z.fwgnq.cn
http://AjQ7eYsM.fwgnq.cn
http://OwAdGvDk.fwgnq.cn
http://mv0V2zVL.fwgnq.cn
http://j0c9wEFO.fwgnq.cn
http://bj6s7WwZ.fwgnq.cn
http://hahzwDci.fwgnq.cn
http://dQvnWm7N.fwgnq.cn
http://ToDmFpyX.fwgnq.cn
http://p8noFtJ4.fwgnq.cn
http://SL2BpgWy.fwgnq.cn
http://TzToVoij.fwgnq.cn
http://cUCVrrCI.fwgnq.cn
http://nRZqJPWn.fwgnq.cn
http://f3fPjVwl.fwgnq.cn
http://yQHlpLdM.fwgnq.cn
http://40MTpESS.fwgnq.cn
http://6NsHdSrU.fwgnq.cn
http://bAlmnDot.fwgnq.cn
http://O7a7wmim.fwgnq.cn
http://WkhNOjH3.fwgnq.cn
http://UK5n8egy.fwgnq.cn
http://www.dtcms.com/a/382109.html

相关文章:

  • 论文阅读 2025-9-13 论文阅读随心记
  • leecode56 合并区间
  • 用R获取 芯片探针与基因的对应关关系 bioconductor的包的 三者对应关系
  • xxl-job的使用
  • 2025 年 9 月 12 日科技前沿动态全览
  • 高德地图自定义 Marker:点击 悬停 显示信息框InfoWindow实战(Vue + AMap 2.0)
  • 猿辅导Java后台开发面试题及参考答案
  • 启动项目提示:org.springframework.context.annotation不存在问题
  • 从零开始的指针(3)
  • “移动零”思路与题解
  • 大模型训练框架:Swift 框架
  • [笔记] 来到了kernel 5.14
  • 【算法笔记】快速排序算法
  • 数据结构——顺序表(c语言笔记)
  • Java 黑马程序员学习笔记(进阶篇6)
  • Day04 前缀和差分 1109. 航班预订统计 、304. 二维区域和检索 - 矩阵不可变
  • Java 类加载与对象内存分配机制详解
  • 【数据结构——图与邻接矩阵】
  • 再次深入学习深度学习|花书笔记1
  • 信息检索、推荐系统模型排序质量指标:AP@K和MAP@K
  • 详解 OpenCV 形态学操作:从基础到实战(腐蚀、膨胀、开运算、闭运算、梯度、顶帽与黑帽)
  • 《2025年AI产业发展十大趋势报告》五十五
  • 【面试题】RAG优化策略
  • 06 一些常用的概念及符号
  • Oracle事件10200与10201解析:数据库读一致性CR与Undo应用
  • 新手向:C语言、Java、Python 的选择与未来指南
  • 【人工智能通识专栏】第十四讲:语音交互
  • 3.RocketMQ核心源码解读
  • 微信小程序开发教程(十一)
  • [硬件电路-194]:NPN三极管、MOS-N, IGBT比较