Python 从入门到实战35(进程-multiprocessing模块)
我们的目标是:通过这一套资料学习下来,可以熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。
上篇文章我们讨论了turtle库绘制图画操作的相关知识。今天学习一下进程的概念和创建方法。
1、什么是进程
在了解进程之前,我们先明确一下多任务的概念。多任务,是指操作系统执行多个任务。例如我们的计算机打开了音乐、浏览器、电影等,这时就是多任务运行。
上面说的每一个任务就是一个进程。所以,进程就是指计算机中已运行程序的实体。
进程和程序的不同之处在于:程序本身是指指令、数据、及其组织形式的描述。进程是程序真正运行实例。例如没有打开微信之前是程序,打开运行就开启了一个进程。如下图打开任务管理器,查看所示进程:
2、使用multiprocessing创建进程
1)创建进程的方法
multiprocessing 模块提供了Process 类来代表一个进程对象,语法格式:
Process(group,target,name,args,kwargs)
参数说明:group ----参数未使用,值始终是None
target:表示当前进程启动时执行的可调用对象,子程序要执行的任务
args:表示传递给target函数的参数(要用元组)
kwargs:表示传递给target函数的参数字典
name:表示当前进程实例的别名,子进程多的名称
举例说明:实例化进程,执行子进程
#创建子进程的例子
from multiprocessing import Process
#执行子进程
def mytest(interval):
print("i am a child process!")
#执行主程序
def main():
print("i am farther process!")
p = Process(target=mytest,args=(1,),name="p1-mytest") #实例化Process 进程类
p.start() #启动进程实例,即创建子进程
print("farther process finish")
if __name__ == "__main__":
main()
输出参考:
上面的例子中,p.start()#启动进程实例,即创建子进程,开始执行mytest()函数。
2)操作进程常用方法
除了这个start()方法以外,Process 的实例还有以下方法:
start():启动子进程,调用默认的run()
run():表示进程的运行方式。如果没有给定target 参数,对这个对象调用start()方法时,则将执行对象中的run()方法;
name:当前进程实例的名字,默认时Process-N,N 为从1开始递增的整数;
terminate:强制子程序终止进程,不管任务是否完成立即终止;
is_alive():判断子程序是否还在执行;
daemon:表示守护进程,默认值是False,当设置为Ture时,当父进程结束时,它会尝试终止其所有守护进程子。必须在start()之前设置;
join([timeout]):timeout默认值时None,该方法为阻塞,在调用join的子进程结束后才开始后面的代码,如果timeout有设定值,join会阻塞设定的时间才开始后面的代码;
pid:返回当前进程的ID。用os模块的os.getppid()是返回主进程的ID,os.getpid()是返回当前进程的ID;
exitcode:进程在运行时为None、如果为–N,表示被信号N结束(了解即可)。
举例说明:
#创建等待子进程执行结束的例子
import os
import time
from multiprocessing import Process
#两个子进程调用的方法
def child_1(interval):
print("子进程(%s)开始执行,父进程为(%s)"%(os.getpid(),os.getppid())) #打印子进程pid,父进程pid
t_start = time.time() #计时开始
time.sleep(interval) #程序将会被挂起interval 秒
t_end = time.time() #计时结束
print("子进程(%s)执行时间为'%0.2f'秒"%(os.getpid(),t_end-t_start)) #子进程执行时间
def child_2(interval):
print("子进程(%s)开始执行,父进程为(%s)"%(os.getpid(),os.getppid())) #打印子进程pid,父进程pid
t_start = time.time() #计时开始
time.sleep(interval) #程序将会被挂起interval 秒
t_end = time.time() #计时结束
print("子进程(%s)执行时间为'%0.2f'秒"%(os.getpid(),t_end-t_start)) #子进程执行时间
#执行主程序
def main():
print("********父进程执行开始********")
print("父进程的PID:%s"%os.getpid()) #输出当前程序的pid
process1 = Process(target=child_1,args=(1,)) #实例化进程1
process2 = Process(target=child_2,name='p2name',args=(2,))#实例化进程2
process1.start() #启动进程1
process2.start() #启动进程2
#父进程继续执行,如果子进程还在执行则返回True
print("process1.is_alive=%s"%process1.is_alive())
print("process2.is_alive=%s"%process1.is_alive())
#输出子进程的别名和PID
print("process1.name=%s"%process1.name) #按照默认设定的名字,展示Process-1
print("process1.pid=%s" % process1.pid)
print("process2.name=%s" % process2.name) #按照我们设定的名字,展示p2name
print("process2.pid=%s" % process2.pid)
print("********等待子进程********")
process1.join()#等待子进程1结束
process2.join()
print("********父进程执行结束********")
if __name__=="__main__":
main()
黄色部分等待子进程执行结束,然后继续执行父进程,参考执行结果:
今天先写学习到这里了,每天进步一点点。明天也要加油啊!
相关文章:

Python 从入门到实战35(进程-multiprocessing模块)
我们的目标是:通过这一套资料学习下来,可以熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了turtle库绘制图画操作的相关知识。今天学习一下…...

“米哈游悄然布局未来科技:入股星海图,共绘具身智能机器人新篇章“
米哈游悄然入股具身智能机器人公司:技术布局与未来展望 近日,米哈游阿尔戈科技有限公司宣布入股具身智能机器人公司星海图,这一消息在行业内引起了广泛关注。米哈游,这家以游戏开发而闻名的企业,近年来正逐步扩大其在人工智能和新兴科技领域的投资布局,此次入股星海图正是…...

基于spring boot的篮球论坛系统
作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…...

华夏ERP账号密码泄露漏洞
漏洞描述 华夏ERP账号密码泄露漏洞 漏洞复现 FOFA "jshERP-boot" POC IP/jshERP-boot/user/getAllList;.ico...

Android问题笔记五十:构建错误-AAPT2 aapt2-7.0.2-7396180-windows Daemon
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...

CAD 3dsmax maya等autodesk系列专用卸载修复工具AutoRemove,一键完全彻底卸载删除软件的专用卸载工具
AutoRemove 是一款功能强大的软件卸载工具,专门设计用于彻底清除Autodesk系列软件,如AutoCAD、3ds Max、Revit、Maya、Inventor、Navisworks、civil 3d、sketchbook、Architecture、Electrical、Mechanical、、等,从您的系统中。它通过深度清…...
python中的函数介绍
文章目录 1.函数1.1 语法格式1.2 函数参数1.3 函数的返回值1.4 变量作用域1.5 函数的执行过程1.6 链式调用1.7 嵌套调用1.8 函数栈帧1.9 函数递归1.10 参数默认值1.11 关键词参数 1.函数 无论是编程中的函数还是数学中的函数,本质都是差不多的,丢给函数…...

LinuxO(1)调度算法
概念 在Linux中,O(1)调度算法是一种进程调度算法。O(1)表示算法的时间复杂度是常数级别的,与系统中的进程数量无关。 运行队列结构 他采用了两个运行队列,一个活动队列和一个过期队列。活动队列中的进程是有资格获取CPU时间片的进程&#x…...

安防监控/视频系统EasyCVR视频汇聚平台如何过滤134段的告警通道?
视频汇聚/集中存储EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。平台支持国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为…...
SDKMAN!安装Maven
一、通过SDKMAN!正常安装 查看maven版本 sdk list maven安装maven 3.6.3版本 sdk install maven 3.6.3查看maven 3.6.3安装目录 sdk home maven 3.6.3安装过程中可能会失败,出现tmp临时目录中存在临时文件 # 移除临时文件,不要手动删除,…...

[NeurIPS 2022] STaR: Bootstrapping Reasoning With Reasoning
Contents IntroductionMethodExperimentsReferences Introduction CoT 推理可以有效提升 LLM 推理能力,但 few-shot prompting 无法发挥 CoT 的全部潜力,训练能够生成中间推理步骤 (i.e., rationale) 的 LLM 又需要大量人工标注 rationale,为…...
C++中对象的构造与析构
目录 一、引言 二、构造函数详解 1.构造函数的作用 2.构造函数的调用时机 3.构造函数的分类 三、析构函数详解 1.析构函数的作用 2.析构函数的调用时机 四、实例分析 五、总结 本文将详细讲解C中对象的构造和析构过程,包括构造函数、析构函数的作用及其调用时机…...

算法笔记(九)——栈
文章目录 删除字符串中的所有相邻重复项比较含退格的字符串基本计算机II字符串解码验证栈序列 栈是一种先进后出的数据结构,其操作主要有 进栈、压栈(Push) 出栈(Pop) 常见的使用栈的算法题 中缀转后缀逆波兰表达式求…...
动态SLAM总结一
文章目录 方法分类:OctoMap:(2013)UFOMap:(2020)Removert:(2020)ERASOR:(2021)DynamicFilter:(202…...

HTB:Mongod[WriteUP]
连接至HTB服务器并启动靶机 靶机IP:10.129.99.33 分配IP:10.10.16.12 1.How many TCP ports are open on the machine? 使用nmap对靶机进行全端口TCP脚本、服务扫描: nmap -sC -sV -T4 -p- {TARGET_IP} 可以看到靶机共开放TCP端口2个&…...

DenseNet算法:口腔癌识别
本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 一 DenseNet算法结构 其基本思路与ResNet一致,但是它建立的是前面所有层和后面层的密集连接,它的另一大特色是通过特征在channel上的连接来实现特征重用。 二 设计理念 三…...

828华为云征文 | 利用FIO工具测试Flexus云服务器X实例存储性能
目录 一、Flexus云服务器X实例概要 1.1 Flexus云服务器X实例摘要 1.2 产品特点 1.3 存储方面性能 1.4 测评服务器规格 二、FIO工具 2.1 安装部署FIO 2.2 主要性能指标概要 三、进行压测 3.1 测试全盘随机读IO延迟 3.2 测试全盘随机写IO延迟 3.3 测试随机读IOPS 3.4…...

Pikachu-File Inclusion- 本地文件包含
前端每次挑选篮球明星,都会通过get请求,传了文件名,把页面展示出来,由于文件名时前端传给后台;并且查看源码,没有对参数做限制; 尝试直接从前端修改filename 参数; filename../../../../../../…...

linux基础 超级笔记
1.Linux系统的组成 Linux系统内核:提供系统最核心的功能,如软硬件和资源调度。 系统及应用程序:文件、任务管理器。 2.Linux发行版 通过修改内核代码自行集成系统程序,即封装。比如Ubuntu和centos这种。不过基础命令是完全相…...

Python——异常处理机制
Python 异常处理机制 Python异常与异常处理机制针对 Traceback 的解读try-except-else-finallyexcept语句except语句的机制在 except 语句中引用当前被处理的 Python 异常 finally语句finally语句执行后才能抛出未被处理的异常finally中执行return会导致异常丢失 raise 语句rai…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...