【Python】多线程编程 ① ( 线程相关概念 | 进程 | 线程 | 协程 / 纤程 | 管程 )

文章目录

一、线程相关概念


1、进程

进程 与 操作系统 : 进程 是 操作系统 中 能够独立运行的单元 , 是 操作系统 对 正在运行的 应用程序 的 抽象结构 描述 ;

  • 操作系统 中 运行的每个 应用程序 就是一个进程 ;
  • 一个操作系统中可以运行 多个 进程 ;
  • 每个 应用程序 都会被 操作系统 分配一个 进程 ID ;
  • 多个进程之间 , 可以通过 管道 / 套接字 / 信号量 / 共享内存 进行通信 ;

进程 与 资源 :

  • 进程 是 操作系统 中 , 能够 独立运行 和 资源分配 的 基本单位 , 进程运行需要消耗 CPU / 硬盘 / 内存 / IO 设备 等资源 ;
  • 进程的本质 是 机器码指令 + 数据 + 内存 ( 堆内存 / 栈内存 ) 组成的 可 独立运行 的实体 ;

2、线程

进程 调度 涉及到 CPU / 硬盘 / 内存 / IO 设备 等多种资源 , 调度开销很大 , 效率很低 ;

为了 提高 资源调度效率 , 提出了 " 线程 " 概念 , 线程 的 运行 和 调度 相对于 进程 都是 轻量级的 ;

  • 线程 比 进程 更加 轻量级 ;
  • 调度资源 成本 比 进程要低 ;

线程 是 操作系统中 独立运行 和 资源分配 的 最小单位 ;

一个进程可以同时运行多个线程 , 引入线程 可以 提高 操作系统的 并发效率 ;

在同一个进程中 , 多个线程可以共享该进程的 CPU / 硬盘 / 内存 / IO 设备 等多种资源 ;

3、协程 / 纤程

" 协程 " 是 轻量级 的 线程 , 一个线程 可以包含 多个 " 协程 " ;

" 协程 " 是 由 用户空间 的 应用程序 控制的 , 内核空间 的 操作系统内核 对此 一无所知 , 也就是说 协程 对 内核 来说是隐藏的 ;

操作系统 无法 调度 " 协程 " ;

协程 有自己的 寄存器上下文 和 栈 , 协程调度时 ,

  • 协程挂起 需要将 寄存器上下文 和 栈 保存起来 ,
  • 协程恢复 时 再 恢复 寄存器上下文 和 栈 ;

协程 需要 依托 线程 执行 , 同一时间 一个 线程 只能 执行一个协程任务 ,

协程 有 挂起 和 恢复 两种状态 , 在线程中 , 协程恢复 则 开始执行协程 , 线程不能再执行其它代码操作 , 协程挂起 则停止执行协程 , 线程继续执行其它代码逻辑 ;

在主线程中执行协程任务 , 协程挂起后 , 会继续执行主线程的其它操作 , 不会阻塞主线程 ;

在 一个 线程 中 , 可以定义多个 协程 任务 , 可以任意切换 协程 任务 执行 , 同一时间只能运行一个协程任务 ;

协程 和 纤程 是 相同的概念 , 在不同的开发平台 / 场景 中的 对同一个概念的表述 ,

  • Kotlin 中叫做 " 协程 "
  • Windows 中叫做 " 纤程 "

4、管程

" 管程 " 是 用于 管理 共享资源 的 程序结构 ;

" 管程 " 提供了 可以 确保 多个进程 访问 临界资源 的 同步机制 ;

临界资源 是 一次仅允许一个进程使用的 共享资源 , 多个进程只能互斥访问的资源 ;

  • 属于临界资源的硬件有打印机、磁带机等;
  • 属于临界资源的软件有消息队列、变量、数组、缓冲区等。

进程间采取互斥方式 , 实现对这种资源的共享 ;

相关推荐
独好紫罗兰11 分钟前
对python的再认识-基于数据结构进行-a006-元组-拓展
开发语言·数据结构·python
Dfreedom.13 分钟前
图像直方图完全解析:从原理到实战应用
图像处理·python·opencv·直方图·直方图均衡化
铉铉这波能秀28 分钟前
LeetCode Hot100数据结构背景知识之集合(Set)Python2026新版
数据结构·python·算法·leetcode·哈希算法
怒放吧德德1 小时前
Python3基础:基础实战巩固,从“会用”到“活用”
后端·python
aiguangyuan1 小时前
基于BERT的中文命名实体识别实战解析
人工智能·python·nlp
喵手1 小时前
Python爬虫实战:知识挖掘机 - 知乎问答与专栏文章的深度分页采集系统(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集知乎问答与专栏文章·采集知乎数据·采集知乎数据存储sqlite
铉铉这波能秀1 小时前
LeetCode Hot100数据结构背景知识之元组(Tuple)Python2026新版
数据结构·python·算法·leetcode·元组·tuple
kali-Myon1 小时前
2025春秋杯网络安全联赛冬季赛-day2
python·安全·web安全·ai·php·pwn·ctf
Olamyh2 小时前
【 超越 ReAct:手搓 Plan-and-Execute (Planner) Agent】
python·ai
deepxuan2 小时前
Day7--python
开发语言·python