python入门开发学习笔记之进程理论

小甲鱼《零基础入门学习Python》学习笔记 根据老师的建议,现在将第二次复习小甲鱼的《零基础入门学习Python》而做的学习笔记,上传到网上,方便今后复习和保存,因为是手写的,所以做了扫描锐化处理,方便阅读。 ... 阅读详情

本节重点

  • 掌握什么是进程
  • 掌握并发与并行
  • 了解进程创建的方式
  • 掌握进程的三种状态

本节时长需控制在30分钟内

一 什么是进程

进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。

二 进程与程序的区别

程序仅仅只是一堆代码而已,而进程指的是程序的运行过程。

举例:

想象一位有一手好厨艺的计算机科学家egon正在为他的女儿元昊烘制生日蛋糕。

他有做生日蛋糕的食谱,

厨房里有所需的原料:面粉、鸡蛋、韭菜,蒜泥等。

在这个比喻中:

做蛋糕的食谱就是程序(即用适当形式描述的算法)

计算机科学家就是处理器(cpu)

而做蛋糕的各种原料就是输入数据。

进程就是厨师阅读食谱、取来各种原料以及烘制蛋糕等一系列动作的总和。

现在假设计算机科学家egon的儿子alex哭着跑了进来,说:Hey, Dad, my head got stung by a bee.

科学家egon想了想,处理儿子alex蛰伤的任务比给女儿元昊做蛋糕的任务更重要,于是

计算机科学家就记录下他照着食谱做到哪儿了(保存进程的当前状态),然后拿出一本急救手册,按照其中的指示处理蛰伤。这里,我们看到处理机从一个进程(做蛋糕)切换到另一个高优先级的进程(实施医疗救治),每个进程拥有各自的程序(食谱和急救手册)。当蜜蜂蛰伤处理完之后,这位计算机科学家又回来做蛋糕,从他
离开时的那一步继续做下去。

需要强调的是:同一个程序执行两次,那也是两个进程,比如打开暴风影音,虽然都是同一个软件,但是一个可以播放苍井空,一个可以播放饭岛爱。

三 并发与并行

无论是并行还是并发,在用户看来都是’同时’运行的,不管是进程还是线程,都只是一个任务而已,真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务

一 并发:是伪并行,即看起来是同时运行。单个cpu+多道技术就可以实现并发

举例(单核+多道,实现多个进程的并发执行):

egon在一个时间段内有很多任务要做:python备课的任务,写书的任务,交女朋友的任务,王者荣耀上分的任务,

但egon同一时刻只能做一个任务(cpu同一时间只能干一个活),如何才能玩出多个任务并发执行的效果?

egon备一会课,再去跟李杰的女朋友聊聊天,再去打一会王者荣耀…这就保证了每个任务都在进行中.

二 并行:同时运行,只有具备多个cpu才能实现并行

单核下,可以利用多道技术,多个核,每个核也都可以利用多道技术(多道技术是针对单核而言的)

有四个核,六个任务,这样同一时间有四个任务被执行,假设分别被分配给了cpu1,cpu2,cpu3,cpu4,

一旦任务1遇到I/O就被迫中断执行,此时任务5就拿到cpu1的时间片去执行,这就是单核下的多道技术

而一旦任务1的I/O结束了,操作系统会重新调用它(需知进程的调度、分配给哪个cpu运行,由操作系统说了算)

可能被分 配给四个cpu中的任意一个去执行

四 进程的创建(了解)

但凡是硬件,都需要有操作系统去管理,只要有操作系统,就有进程的概念,就需要有创建进程的方式,一些操作系统只为一个应用程序设计,比如微波炉中的控制器,一旦启动微波炉,所有的进程都已经存在。

而对于通用系统(跑很多应用程序),需要有系统运行过程中创建或撤销进程的能力,主要分为4中形式创建新的进程

  1. 系统初始化(查看进程linux中用ps命令,windows中用任务管理器,前台进程负责与用户交互,后台运行的进程与用户无关,运行在后台并且只在需要时才唤醒的进程,称为守护进程,如电子邮件、web页面、新闻、打印)

  2. 一个进程在运行过程中开启了子进程(如nginx开启多进程,os.fork,subprocess.Popen等)

  3. 用户的交互式请求,而创建一个新进程(如用户双击暴风影音)

  4. 一个批处理作业的初始化(只在大型机的批处理系统中应用)

无论哪一种,新进程的创建都是由一个已经存在的进程执行了一个用于创建进程的系统调用而创建的:

  1. 在UNIX中该系统调用是:fork,fork会创建一个与父进程一模一样的副本,二者有相同的存储映像、同样的环境字符串和同样的打开文件(在shell解释器进程中,执行一个命令就会创建一个子进程)

  2. 在windows中该系统调用是:CreateProcess,CreateProcess既处理进程的创建,也负责把正确的程序装入新进程。

关于创建的子进程,UNIX和windows

1.相同的是:进程创建后,父进程和子进程有各自不同的地址空间(多道技术要求物理层面实现进程之间内存的隔离),任何一个进程的在其地址空间中的修改都不会影响到另外一个进程。

2.不同的是:在UNIX中,子进程的初始地址空间是父进程的一个副本,提示:子进程和父进程是可以有只读的共享内存区的。但是对于windows系统来说,从一开始父进程与子进程的地址空间就是不同的。

六 进程的终止(了解)
  1. 正常退出(自愿,如用户点击交互式页面的叉号,或程序执行完毕调用发起系统调用正常退出,在linux中用exit,在windows中用ExitProcess)

  2. 出错退出(自愿,python a.py中a.py不存在)

  3. 严重错误(非自愿,执行非法指令,如引用不存在的内存,1/0等,可以捕捉异常,try…except…)

  4. 被其他进程杀死(非自愿,如kill -9)

七 进程的层次结构

无论UNIX还是windows,进程只有一个父进程,不同的是:

  1. 在UNIX中所有的进程,都是以init进程为根,组成树形结构。父子进程共同组成一个进程组,这样,当从键盘发出一个信号时,该信号被送给当前与键盘相关的进程组中的所有成员。

  2. 在windows中,没有进程层次的概念,所有的进程都是地位相同的,唯一类似于进程层次的暗示,是在创建进程时,父进程得到一个特别的令牌(称为句柄),该句柄可以用来控制子进程,但是父进程有权把该句柄传给其他子进程,这样就没有层次了。

八 进程的状态

tail -f access.log |grep ‘404’

执行程序tail,开启一个子进程,执行程序grep,开启另外一个子进程,两个进程之间基于管道’|'通讯,将tail的结果作为grep的输入。

进程grep在等待输入(即I/O)时的状态称为阻塞,此时grep命令都无法运行

其实在两种情况下会导致一个进程在逻辑上不能运行,

  1. 进程挂起是自身原因,遇到I/O阻塞,便要让出CPU让其他进程去执行,这样保证CPU一直在工作

  2. 与进程无关,是操作系统层面,可能会因为一个进程占用时间过多,或者优先级等原因,而调用其他的进程去使用CPU。

因而一个进程由三种状态

九 进程并发的实现(了解)

进程并发的实现在于,硬件中断一个正在运行的进程,把此时进程运行的所有状态保存下来,为此,操作系统维护一张表格,即进程表(process table),每个进程占用一个进程表项(这些表项也称为进程控制块)

该表存放了进程状态的重要信息:程序计数器、堆栈指针、内存分配状况、所有打开文件的状态、帐号和调度信息,以及其他在进程由运行态转为就绪态或阻塞态时,必须保存的信息,从而保证该进程在再次启动时,就像从未被中断过一样。

OMNET++ INET框架学习教程(一) 在自组网学习的道路上摸石头过河,帮你快速入门OIMNET++平台下的INET框架。 阅读详情

相关推荐

CD-HIT的使用

继续我的生信笔记系列。从某网站的附带文献中读到该工具,搜索了一下,发现网上的大佬们都在讲如何用它去冗余,相对官方页面的介绍而言很是片面,于是刚好有聚类的需求的我准备对其全体功能做做实验,学习一下由李伟忠博士在伯纳姆研究所(现为桑福德伯纳姆医学研究所)亚当·戈兹克博士的实验室开发的牛工具。 首先是官方介绍: CD-HIT是一个非常广泛使用的程序,用于蛋白质或核苷酸序列的聚类和比较。最初由李伟忠博士在伯纳姆研究所(现为桑福德伯纳姆医学研究所)亚当·戈兹克博士的实验室开发,CD-HIT速度非常快,可以处理非常

一名学术waste的note pro 1万+

进程理论

一 什么是进程 进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。二 进程与程序的区别 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程。 需要强调的是:同一个程序执行两次,那也是两个进程,比如打开暴风影音,虽然都是同一个软件,但是一个可以播放苍井空,一个可以播放饭岛爱。三 并发与并行 无论是并行还是并发,在用户看来都是'同时'运行的,不管是进程还是线程...

weixin_33749131的博客 135

支付宝H5支付唤醒协议全解析:从alipays://到动态orderSuffix的抓取与拼接

本文深入解析支付宝H5支付唤醒协议,从alipays://协议设计到动态orderSuffix参数的抓取与拼接,详细介绍了支付宝H5支付的底层机制。内容包括协议架构剖析、动态令牌生成与捕获、浏览器兼容性解决方案以及安全机制设计,为开发者提供全面的技术指南和实践建议。

weixin_27972919的博客 3498

01-01 机器学习

文章目录机器学习1.1 学习目标1.2 人工智能1.3 机器学习1.3.1 机器学习基本术语1.4 深度学习1.5 机器学习分类1.5.1 监督学习1.5.1.2 回归问题1.5.1.3 分类问题1.5.2 无监督学习1.5.2.1 聚类1.5.3 半监督学习1.5.4 强化学习1.6 Python语言的优势1.7 小结 机器学习   可能有很多同学想到高大上的人工智能、机器学习和深度学习,会在怀...

小猿取经 506

”COMSOL“竟然如此简单!我悟了!!

COMSOL Multiphysics具有强大的多物理场全耦合仿真分析功能、高效的计算性能,可以保证数值仿真的高度精确,已被广泛应用于各个学科领域,近年来运用COMSOL来解决电化学实际工程问题也越来越普遍。

C1012562281的博客 3448

MD01和MD01N比较

摘要:MD01(传统MRP)与MD01N(MRP Live)是SAP系统不同版本的物料需求计划事务码。核心差异包括:MD01N取消MRP列表、简化计划规则、合并MPS/MRP操作、采用BAdI技术等,体现S/4HANA平台简化、标准化和智能化的演进方向。MD01N通过优化参数配置、增强筛选功能、利用HANA实时计算能力,实现了更高效的物料计划流程,代表了新一代计划引擎的技术革新。

SAP_LES_COM的博客 891

Python格式化字符串的4种方式

文章目录Python格式化字符串的4种方式一:%号二:str.format三:f-Strings四:标准库模板五:总结四种方式的应用场景 Python格式化字符串的4种方式 一:%号 %号格式化字符串的方式从Python诞生之初就已经存在时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式。 # 1、格式的字符串(即%s)与被格式化的字符串(即传入的值)必须按照位置一一对应 # ps:当需格式化的字符串过多时,位置极容易搞混 print('%s asked %s to do somethin

淘小欣的博客 8067

AI辅助专利撰写实战:30分钟高效产出发明专利初稿

在技术创新的浪潮中,专利撰写常常是开发者将创意转化为知识产权保护壁垒的关键一步,但这个过程往往耗时费力,需要兼顾技术深度与法律文书规范。近期,借助AI辅助工具来提升专利撰写效率已成为一个热门探索方向。本文将围绕如何利用AI工具,在30分钟内高效完成一篇具备授权潜力的发明专利初稿,进行一场从0到1的实战演练。无论你是独立开发者、初创团队的技术负责人,还是希望保护自己研究成果的学生,这套方法都能帮助你快速梳理技术方案,形成结构严谨、逻辑清晰的专利申请文档。 1. 背景与核心概念:AI辅助专利撰写的价值与边界 在

weixin_34253126的博客 494

我真的还是18岁的那个我

大家好,我是egon,一名长相俊美且有情怀的老程序员,这不重要。。。老男孩IT教育-上海校区的最近出事了...... ------------------------------------------------------------------------------ 什么情况??? 在...

weixin_38166557的博客 150

用ESP32和HomeSpan自制HomeKit智能灯,手把手教你从零接入苹果家庭App

本文详细介绍了如何使用ESP32开发板和HomeSpan开源库自制原生HomeKit智能灯,从硬件搭建到软件配置,再到通过苹果家庭App控制的全过程。项目绕过了苹果MFi认证,成本低廉但功能完整,支持Siri语音控制、自动化场景等高级功能,是智能家居DIY的实用指南。

weixin_28717431的博客 321

【WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

AI人人懂 593

day43 数据库学习egon的博客 视图、触发器、事务、存储过程、函数

一 视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数...

weixin_30407613的博客 231

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

入门python多进程(一)

mark一下学习笔记: 1.多任务: 学习python多线程与多进程之前,需要先知道多任务这个概念。多任务即是同一时间让系统执行多个任务,其中包括并发和并行两种方式。 A.并发 如上图所示,假设应用场景下只有单核的CPU,需要同时处理3个任务。这就是并发,单核CPU在开启任务1之后会立马开启任务2和任务3,这种在一段时间内交替执行任务的方式就成为并发。此外,单核CPU下只会存在并发,不存在并行的情况。 B.并行 并行就是在同一时刻一起执行多个任务。上图就是多核CPU,每个CPU核执行1个任务的例子。.

weixin_42096202的博客 3985

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

[Python学习日记-84] 并发编程之多进程 —— 进程理论

进程理论是计算机科学中一种重要的概念,用来描述操作系统中执行的程序实例。在操作系统中,每个程序的执行被称为一个进程。进程理论研究进程的创建、调度、通信、同步和终止等方面的原理和方法。本篇我们将介绍进程的概念、进程的创建和终止,以及并发与并行的区别,并了解并发的实现。

JovaZou的成长之路 873

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python Gstreamer入门-学习笔记

Python Gstreamer入门-学习笔记   历时一个月的Python Gstreamer入门阶段接近尾声,在这里总结一下自己的学习历程。首先感谢一下Andy同学和Stephen老师的帮助和指导。 1.基础知识学习阶段   首先需要了解Gstreamer是什么,有哪些基本的内容,element、pad、bin、pipeline各是什么,其中又有哪些分类。这里推荐Gsteamer的官方文档进行...

小平爱吃肉的博客 1万+

06.Python中的进程学习笔记

进程是一个执行中程序的实例。它是操作系统进行资源分配和调度执行的基本单位。

2302_81214177的博客 1830

Python并发编程之进程理论

本文将详细介绍进程相关概念。

2401_86943461的博客 970

python全栈开发 * 进程理论 进程创建 * 180724

一.进程理论 1.进程是资源分配的最小单位. 2.进程调度就是多个进程在操作系统的控制下被CPU执行,去享用计算机的资源. 先来先服务 短作业优先 时间片轮转 多级反馈队列 3.进程调度的过程是不能够随意被程序影响的 4.进程的三个状态: 就绪 运行 阻塞 就绪状态: 当进程已分配到除CPU以外的所有必要的资源,只要获...

aug38165的博客 104

python入门开发学习笔记之开启进程的两种方式

本节重点 掌握multiprocessing模块开启进程的两种方式 本节时长需控制在15分钟内 一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。 Python提供了multiprocessing。 multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。multiproc

Python_0011的博客 1248

[深度学习入门]基于Python的理论与实现

本文基本覆盖了深度学习入门的全部内容,涉及:Python入门、感知机、神经网络、神经网络的学习、误差反向传播法、深度学习相关的技巧,以及卷积神经网络、深度学习的原理。花了我版半年的时间学习,一周的时间制作了本篇文章。读完本文,我敢保证一定能带你快速入门深度学习!

東方緋想天 3350

【Python开发】Python入门

摘要:从基础到实践的全面学习路径 本文系统介绍了Python编程语言的学习路线,涵盖五大核心内容: 选择Python的优势:简单易学、应用广泛(AI/数据分析/Web开发)、丰富库资源和活跃社区 基础入门:安装配置、第一个程序、变量与数据类型(整型/浮点/字符串/布尔值) 基本语法:算术/比较/逻辑运算符,条件语句和循环结构 函数与模块:定义使用函数、导入标准库和第三方模块 实践拓展:通过简易计算器项目巩固知识,并推荐菜鸟教程、官方文档等优质学习资源 文章以实例驱动讲解,强调实践应用,适合零

大雨淅淅的博客 3891

Python基础语法(多进程开发&进程建数据共享&进程锁&进程池)

passdef run():#当前进程准备就绪,等待被CPU调度(工作单元其实是进程中的线程)p1.start()run()print("执行此进程",self)p.start()print("继续执行...")# 继续执行...# 执行此进程 <MyProcess name='MyProcess-1' parent=29592 started>

weixin_45213849的博客 1436

【深度学习入门基于Python的理论与实现

深度学习入门基于Python的理论与实现 高清无水印,附源代码、学习软件(用于运行脚本) 该教程包含Python编程基础、神经网络、卷积网络、深度学习等内容。以较为基础的Python语言去实现网络的正向与反向传播,是非常不错的深度学习/神经网络入门学习资料。

擅自各种语言算法!欢迎咨询! 735

Python区块链应用开发从入门到精通

从Python语法基础到区块链技术原理,再到智能合约开发、离线钱包开发以及区块链Web项目实战,全方位覆盖,案例详实,带你一步步成为区块链开发高手!在实战项目中,你将亲手开发一个完整的区块链Web项目,检验学习成果,积累实战经验,为未来的职业发展打下坚实基础!💡 无论你是想学习Python编程的初学者,还是对区块链开发感兴趣的行业从业者、金融科技爱好者,亦或是职业院校相关专业的学生,这本书都是你的不二之选!这是一本结合理论与实战、适合零基础读者的区块链开发入门神书,带你轻松开启区块链开发之旅!

努力才是唯一的入场券。 1万+
上一篇: python入门开发学习笔记之操作系统介绍
下一篇: python入门开发学习笔记之开启进程的两种方式
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值