找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 273895|回复: 0

第93p,什么是进程?进程、线程、协程的区别

[复制链接]

该用户从未签到

发表于 2021-3-4 13:12:30 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[td=1,1,557,星标公众号方便及时阅读新知识推荐给朋友和朋友一起学习知识大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第93篇文章,第三阶段的课程:Python进阶知识:网络编程之进程、线程、协程之间的区别。


                               
登录/注册后可看大图

经常听到程序员讲进程、线程、协程,那么进程、线程、协程是同一种事物吗?它们之间有什么区别?


                               
登录/注册后可看大图

一、关于进程进程?
1、什么是进程
随便任何打开一个软件或文件,它都是一个正在运行的进程,进程就是正在运行中的程序;

                               
登录/注册后可看大图

创建进程就是在内存中申请一块独立的内存空间,将需要运行的代码放进行执行;所以,一个进行就是一块独立的内存空间;

                               
登录/注册后可看大图

程序就是一堆躺在硬盘上的代码,是“死的”;而进程则表示程序正在执行的过程,是“活的”;
代码被运行中就是进程,进程一定是在内存中运行着的。

                               
登录/注册后可看大图


2、进程的3种状态
如果一台计算机只能同时运行1个程序,现在打开了程序A,则表示A进程在运行态;
再打开程序B,A进程则被切换到后台,A进程的状态称为阻塞态,B进程是阻塞态;
将程序B切换到程序A,在切换的过程中,A进程会迅速从阻塞态切换到准备就绪的就绪态;程序切换成功以后,A进程会变成运行态,B进程则变为阻塞态。

                               
登录/注册后可看大图



3、父进程与子进程
打开一个进程A,在这个进程中再创建多个新进程B,可以称为A进程是其他刚刚创建进程B的父进程,新进程B是进程A的子进程。

                               
登录/注册后可看大图

注:两个进程之间的数据是互相隔离的,不能直接访问;进程间通信需要借助工具进行,比如:队列、堆栈、管道(subprocess)。

                               
登录/注册后可看大图


二、关于线程线程?
1、什么线程
打开一个新的程序,会在系统中开启一个新的进程,但进程并不负责具体的运行,具体的运行由线程执行;

                               
登录/注册后可看大图

进程是资源单位,线程是执行单位;
举例说明:打开一个wps软件,这个时候并没有创建新的文件,如果创建了新的文档,这个文档就是当下运行的wps软件的线程;wps软件本身只占用资源,并没有做具体执行操作,新建的文档才是具体的执行单位;
线程是进程内的具体执行单位,没有父线程或子线程的说法;

                               
登录/注册后可看大图


三、什么是协程?
首先说明,计算机内部没有协程这个东西的存在,协程是由程序员设计好的一种完美运行多个程序的算法或技术;

                               
登录/注册后可看大图

平常电脑在运行QQ、表格、视频、文字等多个软件的时候为什么不会卡死,就基于协程的原理;
假设一台电脑当下只能同时运行1个进程,但在运行多个程序并不会产生卡顿的原因在于,我们不断在各种程序之间切换的过程中;运行态、阻塞态、就绪态在高速进行切换,我们看到的同时运行多个程序,实际上一直都只有单个程序正在运行中。

                               
登录/注册后可看大图



后面的文章继续讲并发与并行、多道技术的概念。
以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。
感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!
本文由杨数Tos原创,欢迎关注,带你一起长知识。
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-7-1 20:51

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表