irpas技术客

〖Python语法进阶篇①〗- 进程与多进程概述_全栈哈士奇

网络 1882

万叶集🎉 隐约雷鸣,阴霾天空。 🎉🎉 但盼风雨来,能留你在此。 🎉

前言: ? 作者简介:渴望力量的哈士奇 ?,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS 赋能的博主 ? 🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


专栏系列(点击解锁)学习路线指引知识定位 🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。 语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。 自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 更新中 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工智能入门 更新中 网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者 网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。 vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。 shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结] WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器 测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得! 测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。 RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。 Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。 MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


文章目录 Python语法进阶篇简介进程与多进程的概念什么是进程?进程的使用场景进程的口粮多进程多进程的执行方式小节

Python语法进阶篇简介

大家好啊,我胡汉三又回来了。 Python零基础入门篇 已经结束,接下来我们即将开始 Python语法进阶篇。该阶段我们主要围绕 多线程编程、正则表达式、以及我们将会有一个 抽奖的实战练习 。

接下来我们就要开始学习 多进程与多线程 了,关于这一块的知识点,其实是有一点的难度的,不过我会尽量使用简单的入门浅显的方法去阐述这部分内容。

首先要做的就是先要了解 什么是多进程与多线程?进程与线程之间的关系是什么?在实际的场景中它们又是如何应用的。

在概念上有了一定的了解之后,我们就可以利用 Python 中的模块学习如何在 Python 中创建和使用多进程与多线程。在这个过程中,我们还会学习 进程与线程 关于 池 的概念,除此之外我们还会学习 进程与线程的锁的概念 。为什么会有锁?如何使用锁?在后续的章节我们也会讲到。

最后,我们还会了解一下 Python 中线程的一些特殊性。(这是概念上的内容,理解就好。)

在正则表达式章节同样也是从概念上作为入手,然后整体的了解一下 正则表达式的使用方法 。当有了一个使用概念的时候,我们会学习与之有密切关系的 匹配字符与特殊字符 。当了解了这些内容之后,我们再去学习 正则表达式模块中的常用函数 。正则表达式也是有一定的难度的知识,它的难点主要是它的灵活多变,关于这一块一定要认真才行。

接下来就是我们的重头戏,综合项目实战。我们的主体将会是一个通过命令行的方式执行一个抽奖的操作。

进程与多进程的概念

接下来我们将进入一个全新的阶段,关于进程、线程与异步的相关知识。了解了进程、线程和异步的相关知识后,可以大大的提高我们程序的执行效率。这方面的知识其实是开发中比较难以理解的,作为初学乍道我们不会深入的对它们进行研究。但希望通过该章节的学习,希望大家能够知道进程、线程是什么。异步又是怎么一回儿事儿,以及它们基本的使用方法和特性。

今天这部分章节没有代码相关的知识,因为在这之前我们先来了解一下什么是进程。

什么是进程?

其实进程一直都贯穿着我们的周围,无论是我们使用的智能手机还是电脑,其实都与进程息息相关。比如我们打开某短视频软件,其实就是打开该短视频的一个进程。我们甚至可以说进程就是一个软件的本身,再专业一些的话就是 进程就是程序执行的载体 。

对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个word就启动了一个word进程,打开两个记事本就启动了两个记事本进程。

那么怎样的任务才算是一个进程呢?当一个任务被开启后,操作系统会分配它所需的系统资源,包括内存,I/O和CPU等,如果系统资源不够,则会出现系统崩溃,这样的任务可被称为进程。

进程的使用场景

在我们的实际生活中,当我们打开一个浏览器的时候,又或者打开一个游戏的时候;或者我们平时打开的QQ或者微信。当我们双击去启动他们的时候,其实执行的都是一个个的进程。只不过每个进程都有它们各自的名字而已。

所以我们打开的每一个软件(或者游戏),甚至我们之前执行的每一个 Python 脚本都是启动一个进程,而软件(游戏、脚本)就等于我们说的进程。

进程的口粮

我们的进程(或者说软件)要想能够成功的执行启动,其实是需要能量的。人类要想精力充沛,充满能量就需要吃饭。而进程也是一样的, 它们的口粮就是 CPU 与 内存 。不同的程序根据执行的业务场景、强度的不同,对于 CPU 与 内存的需求量也不近相同。就好比是强壮的人和娇小的人饭量要大一些一样… 同样的道理。

多进程

每一个软件启动之后,都是启动一个进程。我们拿手机来举例,在多年以前的时候。我们的智能手机还没有那么的先进,每次我们只能打开一个软件。当我们需要打开另外一个的时候,需要先将当前的软件关闭,才能打开另外一个软件。

比如我们用的苹果手机,在4代之前都是如此,每次只能启动一个线程(即每次只能打开一个软件),这种每次只能启动一个软件的系统,我们称之为单进程系统。

但是现在已经不一样了,我们可以在我们的智能手机中一次性启动多个软件,比如打开微信、QQ或者手机浏览器,它们之间实际上是互不干扰的。

虽然有可能会退到后台,但是它们依然会在后台运行,保持持续工作。比如我们可以打开网易云音乐,一边听着音乐一边在我们的微信上聊天。 启动众多软件的主角就是我们刚刚说的系统,所以相对于这些我们启动的软件来说,系统就是所有软件的父进程,也叫做主进程。而相对于系统这个主进程来说,所有的由它创建的软件的进程就是子进程。

让我们来总结一下多进程,多进程就是可以同时启动多个进程。这些进程都是在执行程序,但是它们互不干扰各自执行自己的业务逻辑。我们可以在一个系统中创建多个进程,每个进程是不同的身份,比如它们是QQ、是微信… 但是相对于一个软件来说(我们拿微信来举例),它在执行程序的时候,也可以再次启动多个进程。比如一个进程帮助我们接收最新的聊天消息,一个进程帮助我们接收朋友圈的最新消息,它们都是由微信这个主进程创建的子进程。所以我们也可以在我们创建的 Python 脚本中创建多个子进程,我们依然可以做一个相关关联。我们的 Python 脚本就相当于微信这个软件,而脚本就相当于主进程;由脚本中创建的新的进程就相当于是我们脚本的子进程…(脑袋炸了…绕的很…)

多进程的执行方式

接下来我们看一下多进程与并行的概念图



前文我们提到过,CPU 与 内存 是进程的口粮。其中的 CPU 不仅仅可以想象成是粮食,也可以理解为是跑道。我们创建好的进程会在 CPU 创建好的跑道上执行运行,我们电脑中的 CPU 是有很多个核心的。上图中的最顶部是 CPU,这个CPU下有四个核心(我们可以认为是4个跑道),当进程被创建之后它就会去找是否有空闲的跑道,当发现有空闲的跑道就会跑进去执行。我们可以看到上图中 3 CORE 这个跑道有两个进程都选择了它,它们会先后进去执行。我们把多进程在不同的多个内核中执行叫做 '多进程的并行处理'。

小节

以上内容就是我们今天所要了解的进程与多进程相关概念。什么是进程、以及多进程又是怎么回事儿。多个进程在执行的时候相互不干扰、同时工作,可以大大的提高我们的效率。这很好理解,如果我们同一时间只能做一件事情,那我们很有可能就会消耗很多时间。这种一件件来处理工作的方式我们通常称之为 "串行工作"。而 "并行工作" 也就是同一时间处理多个事情,必定会缩短我们的工作时间,提高我们的工作效率。

当然,每个进程都需要消耗一定的 CPU资源与内存 ,进程开的越多,对我们的 CPU 与 内存 的依赖也就越多,这也是 进程的一个负面因素。这也不是一个问题,后续会告诉大家如何防止多进程吃垮我们的内存和CPU。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Python语法进阶篇① #进程与多进程概述 #大家好啊我胡汉三又回来了 #Python零基础入门篇 #已经结束接下来我们即将开始 #Python语法进阶篇 #该阶段我们主要围绕