news 2026/9/7 21:27:29

【Python程序开发系列】再谈一谈多进程如何完成多任务(案例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Python程序开发系列】再谈一谈多进程如何完成多任务(案例)

这是我的第473篇原创文章。

一、引言1、多进程完成多任务

① 导入进程包 import multiprocessing ② 通过进程类创建进程对象 进程对象 = multiprocessing.Process() ③ 启动进程执行任务 进程对象.start()

2、通过进程类创建进程对象

进程对象 = multiprocessing.Process([group [, target=任务名 [, name]]])

参数说明:

参数名

说明

执行的目标任务名,这里指的是函数名(方法名)

name

进程名,一般不用设置

group

进程组,目前只能使用None

二、实现过程2.1 主进程与子进程

案例:

结果:

解读:

有一个名为demo0.py的事物 , 此事物算作是一个程度相当简单的程序(也可称脚本)。存在这么一种情况 , 一旦运行了demo0.py这么一个程序 (就是具体的demo0.py) , 便会执行mian函数(此时主进程方面呈现为2620)。随后 , 以一种遵照代码规定执行顺序的方式前进 , 只有等到work1函数执行结束之后 , 才有前提能够去执行work2函数。关于这两个函数 , 它们均处于main函数的进程范围之内。

案例:

结果:

解读:

定义了两个函数, 其中一个函数是music() , 另一个函数是() , 这两个函数分别用于在进程里执行听音乐以及编写代码的任务。在函数当中运用了os.() 以及os.() 来获取当前进程和父进程的ID。

采用了.( )函数去构建两个进程, 进程运行music( )函数, 并且进程运行( )函数。

于主进程里头, 运用.start()方法去开启两个子进程的执行, 对运行结果展开观察之际能够发觉, music()函数以及()函数的任务是在两个子进程之中以并行的方式去施行的。

2.2 进程间不共享全局变量

事实上, 去创建一个子进程这般行为来讲,乃是将主进程所含有的资源予以拷贝, 进而产生出了一个全新的进程, 在此处, 主进程与子进程两者之间是相互独立的状态。

存在三个进程, 每个进程各自所操作的均是自身进程内部的全局变量, 不会对别的进程里面的全局变量造成影响, 所以进程之间不存在共享全局变量的情况, 仅仅是进程之间全局变量的名字是相同的罢了, 然而所操作的并非是同一个进程里边的全局变量。

为了确保主进程于所有子进程均执行完毕之后才终结设有加入它的方法, 反倒不然的话主进程会在子进程尚未执行完竣之际就告终结了。

在多进程编程里面, 子进程的执行呈现异步状态, 主进程跟子进程是并发执行的情形, 要是主进程没等子进程执行完就结束了, 那子进程有可能被强制终止, 致使程序出现异常或者数据丢失这类问题。所以, 在启动子进程以后, 应当调用join()方法去等待子进程执行完再结束主进程, 以此保障程序的正常运行。join()方法会让主进程阻塞, 直到所有子进程都执行完才会接着执行主进程。

示例:

结果:

2.3 控制子进程的运行和终止(保证主进程退出子进程销毁)

案例:

结果:

因子进程与主进程并行执行, 故主进程延迟1秒后, 子进程仍于执行工作函数里的任务。所以, 输出的信息或会在子进程输出信息之前得以出现, 又或会继子进程输出信息之后才呈现, 具体取决于操作系统的调度策略。

解决方案一:设置守护进程

案例:

结果:

解读:

因为子进程属于守护进程, 跟着主进程的退出, 子进程就会被销毁, 而不会再去执行存在于work函数里边的代码。

解决方案二:销毁子进程

案例:

结果:

解读:

令子进程直接进行销毁操作, 此操作意味着终止其执行运行流程, 当主程序进程退出之前之时辰时刻, 将全部所有的子进程直接予以销毁处理就行得通了。

作者有着读研时发表6篇与SCI数据算法有关论文的经历, 当下正在某研究院做和数据算法相关的研究工作, 会依据自身科研实践经历, 持续去分享涵盖数据分析、特征工程、机器学习、深度学习、人工智能整套基础知识与案例, 可关注gzh: 数据杂坛, 以此来获取数据以及源码。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 21:25:11

Plotly-express,如何做出漂亮的图表(一)

平常我们开展数据呈现通常都是借助Excel达成的, 将数据输进表格里, 挑选不一样的表格样式, 最终予以输出呈现, 然而Excel的图标格式化种类太过单一, 并且其显示形式依旧是以静态的样式来进行的, 上述这些特性日益难以应对形式繁杂多样的要求, R此类语言的问世改变了借助Excel绘…

作者头像 李华
网站建设 2026/9/7 21:24:47

条件概率与联合概率:基础概念与解题方法

1. 概率论基础概念回顾在开始解决这个具体问题之前,我们需要先明确几个关键的概率论概念。概率论作为数学的一个重要分支,研究的是随机现象的规律性。对于初学者来说,理解这些基础概念是解决更复杂问题的前提。首先,P(A)表示事件A…

作者头像 李华
网站建设 2026/9/7 21:24:43

iPaaS选型别只看功能清单:5个决定生产稳定性的隐性评估维度

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 21:24:18

基于稳定扩散模型的功夫熊猫AI图像生成项目实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 21:23:55

深度求索开源Agent框架,普通人照做5步省下万元外包费

深度求索新近开源了Agent框架, 将搭建智能体所要面临的门槛以及所需成本, 直接压低到了地板价这个程度。今天不聊虚的,直接拆解5个实操步骤,教你避开新手常踩的坑。不论你身为独立开发者, 或者是普通的打工人, 只要依照着去做, 便能够将AI工具应用到日常…

作者头像 李华
网站建设 2026/9/7 21:23:50

基于SpringBoot的物流管理系统毕设:状态流转与多角色权限是关键

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华