python多进程(二)一些基础属性和方法

import multiprocessing# 定义一个任务函数
def worker(num):print(f'Worker {num} started')# 这里可以执行具体的任务逻辑# ...# 创建多个进程
if __name__ == '__main__':processes = []for i in range(5):p = multiprocessing.Process(target=worker, args=(i,))processes.append(p)p.start()# 等待所有进程完成for p in processes:p.join()print('All processes completed')


  
输出
Worker 0 started
Worker 1 started
Worker 2 started
Worker 3 started
Worker 4 started
All processes completed
这是一段最简单的多进程代码
在上面我们用到了multiprocessing.Process类,传入了一个target,这个参数是方法的的全称
并且不带括号!!!;传入一个args,这是方法需要的参数,以元组的形式传递。
进程的启动是调用start()方法,调用完start之后做了以下操作
1.检查进程的状态,确保它尚未开始运行。
2.在操作系统中创建一个新的进程。
3.将进程的任务逻辑传递给操作系统,以便在新进程中执行。
4.在新进程中调用进程的run()方法,执行任务逻辑。
5.如果进程是守护进程,则设置它的守护属性。
6.开始执行新进程中的任务逻辑

之后循环进程列表,执行join方法,调用完join之后做了以下操作
1.阻塞当前进程,直到调用join()方法的进程执行完毕。
2.等待被调用的进程完成其任务逻辑。
3.如果被调用的进程是守护进程,join()方法会将它标记为已完成,以便主进程可以正常退出。
需要注意的是,join()方法会阻塞当前进程,直到被调用的进程执行完毕。这意味着主进程会等待子进程完成后再继续执行后续的代码

其他一些常用的属性和方法
1.设置进程名使用name参数
p = multiprocessing.Process(target=worker, name='WorkerProcess')
2.查看进程的pid
p.pid
3.检查进程是否存活
p.is_alive()
4.定义进程的执行逻辑
在Python多进程中,run()方法是multiprocessing模块中Process类的一个方法。它定义了进程的执行逻辑,即进程启动后要执行的代码。
当调用start()方法启动进程时,会自动调用进程对象的run()方法来执行进程的任务逻辑。
以下是一个示例代码,演示了如何在自定义的进程类中重写run()方法:
import multiprocessing
# 自定义进程类,继承自multiprocessing.Process
class MyProcess(multiprocessing.Process):
  def run(self):
    print(f'Worker started in process {self.name}')
    # 执行进程的任务逻辑
    print('Worker is doing some work...')
    print(f'Worker finished in process {self.name}')
5.终止进程的执行
p.terminate()
6.关闭进程
p.close()
7.terminate()方法和close()方法的区别
terminate(): 该方法用于强制终止进程,即立即停止进程的执行,不管进程是否已经完成任务。当调用terminate()方法时,进程会立即退出,不会执行任何清理操作。
terminate()方法是非阻塞的,即调用该方法后,主进程不会等待被终止的进程完成。它会立即返回,主进程可以继续执行后续的代码。
被终止的进程无法捕获到terminate()方法的调用,也无法执行任何终止前的清理操作。
close(): 该方法用于关闭进程,即告诉进程不再接收新的任务,但允许进程完成当前的任务。当调用close()方法后,进程不会立即退出,而是继续执行直到完成任务。
close()方法是阻塞的,调用该方法后,主进程会等待被关闭的进程完成当前任务后再继续执行后续的代码。
被关闭的进程可以通过监听KeyboardInterrupt异常等方式来判断是否需要退出,并执行相应的清理操作。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Antd Procomponent 之 proForm - 高级表单

本文作者系360奇舞团前端开发工程师 ProForm 在原来的 Form 基础上增加一些语法糖和更多的布局设置,帮助我们快速的开发一个表单。同时添加一些默认行为,让我们的表单默认好用。分步表单,Modal 表单,Drawer 表单,查询表…

Positive Technologies:勒索软件运营商以泄露数据为由勒索受害者

“双重勒索”和“法律勒索”:勒索软件运营商的新手段。 Positive Technologies 专家提交了一份关于 2023 年第三季度当前网络威胁的研究报告。随着解码器的出现,勒索软件的比例正在下降,因为后者正在失去效力。现在,勒索软件团伙…

react:创建项目

一: 使用create-react-app // 默认创建reactjs的webpack打包项目 npm i create-react-app -g create-react-app 项目名// 创建ts项目打包项目 sudo npx create-react-app my-app --template typescript 二: 使用vite npm create vitelatest // 创建react…

吴恩达《机器学习》4-6->4-7:正规方程

一、正规方程基本思想 正规方程是一种通过数学推导来求解线性回归参数的方法,它通过最小化代价函数来找到最优参数。 代价函数 J(θ) 用于度量模型预测值与实际值之间的误差,通常采用均方误差。 二、步骤 准备数据集,包括特征矩阵 X 和目标…

设计模式之访问者模式

阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概5000多字,预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章&#x…

利用QT画图像的直方图

1.什么是直方图 直方图是一种图形化展示数据频率分布的方式。它将样本数据分成一系列相邻的区间,统计每个区间内数据所占比例或数量,并用矩形条形图表现出来。直方图可以反映样本数据的分布情况,例如它们的集中趋势、对称性和离散程度等。 …

Java2 - 数据结构

5 数据类型 5.1 整数类型 在Java中,数据类型用于定义变量或表达式可以存储的数据的类型。Java的数据类型可分为两大类:基本数据类型和引用数据类型。 byte,字节 【1字节】表示范围:-128 ~ 127 即:-2^7 ~ 2^7 -1 sho…

基于Kinect 动捕XR直播解决方案 - 硬件篇

Kinect-V2 硬件设备 一、Kinect介绍 1、Kinect for Windows 的开发配置 Kinect V2 操作系统:Windows 10(必须) Windows Surface Windows Surface 2 开发环境:Visual Studio 2017 .NET Framework 4.5 (.NET Framework 4.5) 硬…

VEX —— Quaternion|Euler Angle

目录 一,四元数相关概念 四元数 欧拉角 常用四元数相关函数 相互转换 二,案例 案例:沿面中心翻转 案例:路径导弹 案例:RBD刚体还原过渡 一,四元数相关概念 四元数 在vex内四元数为(&am…

【C/PTA】数组练习(编程)

本文结合PTA专项练习带领读者掌握数组,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 文章目录 7-1 计算最大值出现的次数7-2 求一批整数中出现最多的个位数字7-3 装箱问题7-4 数组-值钱的微信号7-5 数组-吹泡泡7-6 数组-数学鬼才 7…

代码随想录Day42-图论:力扣第417m、841m、463e题

417m. 太平洋大西洋水流问题 题目链接 代码随想录文章讲解链接 方法一: 用时:1h0m58s 思路 直接找哪些点既可以到达太平洋又可以到达大西洋比较麻烦,换个角度,找到太平洋可以逆流而上到达的点,再找到大西洋可以逆…

BigDecimal 类型的累加操作

BigDecimal 累加操作 .add操作

C语言:深入浅出qsort方法,编写自己的qsort完成冒泡排序

目录 什么是qsort? 函数原型 比较函数 compar 排序整型数组 排序结构体数组 根据成员字符排序 strcmp函数 根据成员整型排序 自定义qsort实现冒泡排序 qsort的实现原理 具体步骤 快速排序示例代码: 什么是qsort? qsort是 C …

geoserver发布同一字段的多值渲染

Geoserver之同一字段的多值渲染 有时候我们需要对一个shp的某一字段值中的不同值进行区分展示,但是一般的渲染都是按照统一图层展示的,因此为了更好的效果,我们选择使用uDig等工具处理。 文章目录 Geoserver之同一字段的多值渲染前言一共是分…

休眠和睡眠有哪些区别?如何让电脑一键休眠?

电脑中有休眠和睡眠,那么它们有什么区别呢?下面我们就通过本文来了解一下。 休眠和睡眠的区别 电脑在睡眠状态时,会切断内存之外的设备电源,电脑会进入睡眠状态,当再次唤醒电脑后,不会影响睡眠前保存好的工…

机器学习练习1

线性回归 数据集模型,第一列代表人口,第二列代表利润 此处的线性回归 与 常规的 y wx b 不同的是 将b换成了w的一部分 故需要在数据集x前面加个1, 求出b . 可以简化计算,只需要一个乘法就可以

网络安全入门必学内容

网络安全入门 必/学/内/容/ 随着时代的发展,经济、社会、生产、生活越来越依赖网络。而随着万物互联的物联网技术的兴起,线上线下已经打通,虚拟世界和现实世界的边界正变得模糊。这使得来自网络空间的攻击能够穿透虚拟世界的边界&#xff0…

vscode中 vue3+ts 项目的提示失效,volar插件失效问题解决方案

文章目录 前情提要bug回顾解决方案最后 前情提要 说起来很耻辱,从mac环境换到window环境,vscode的配置都是云端更新过来的,应该是一切正常才对,奇怪的是我的项目环境出现问题了,关于组件的ts和追踪都没有效果&#xff…

pandas教程:Introduction to pandas Data Structures pandas的数据结构

文章目录 Chapter 5 Getting Started with pandas5.1 Introduction to pandas Data Structures1 Series2 DataFrame3 Index Objects (索引对象) Chapter 5 Getting Started with pandas 这样导入pandas: import pandas as pde:\python3.7\lib\site-packages\numpy…

vscode设置pycharm中的项目路径和debug方法

真大佬在这 真大佬在这 必须给大佬star 命令行运行: export PYTHONPATH:pwd:/home/bennie/bennie/bennie_project/AI_Lab python main.py 当关闭此命令行时,临时路径会清除,可以将上述export的整条语句,加入~/.bashrc中 该命令中…