网站首页 > 教程文章 正文
大家好,我是杨数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原创,欢迎关注,带你一起长知识。
- 上一篇: Java 调优排错 ThreadDump 分析实战,解读堆栈
- 下一篇: 头矿是什么 头矿是什么意思
猜你喜欢
- 2024-12-30 互联网面经宝典 - 实战篇(阿里巴巴)
- 2024-12-30 「教程」风光摄影达人的杀手锏:延时+堆栈
- 2024-12-30 不同类型的AGV适用于哪些场景呢? agv应用于什么场合
- 2024-12-30 windows 环境下64位汇编语言与32位的区别
- 2024-12-30 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
- 2024-12-30 【打印机驱动】PS, PCL 和 PCL6 有什么不同?
- 2024-12-30 类(class)与结构(struct)的区别? 类class与结构体struct的比较
- 2024-12-30 为什么使用ND减光镜而不是后期堆栈?
- 2024-12-30 深入理解Android NDK日志符号化 日志sdk
- 2024-12-30 佳能R系列R3、R5C、R5、R6、R、RP这6款微单哪一个更值得购买呢?
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)