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

这篇具有很好参考价值的文章主要介绍了【Python】多线程编程 ① ( 线程相关概念 | 进程 | 线程 | 协程 / 纤程 | 管程 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。





一、线程相关概念




1、进程


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

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

进程 与 资源 :

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

2、线程


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

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

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

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


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

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


3、协程 / 纤程


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

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

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


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

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

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

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

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


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


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

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


4、管程


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

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


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

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

进程间采取互斥方式 , 实现对这种资源的共享 ;文章来源地址https://www.toymoban.com/news/detail-608815.html

到了这里,关于【Python】多线程编程 ① ( 线程相关概念 | 进程 | 线程 | 协程 / 纤程 | 管程 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Python系列] 线程、协程、进程和分布式

            我们在写脚本的时候,经常是单线程跑完了全部,毕竟自顶向下按照我们约定的方法运行下去是最规范的。但是很多时候,比如说合法地爬取一些网页信息,图片和资料啊,或者说一些合法的网络请求,读写文件之类的。如果还是单线程地one by one,那么将会影响我们

    2024年02月16日
    浏览(24)
  • 【Python爬虫与数据分析】进程、线程、协程

    目录 一、概述 二、进程的创建 三、线程的创建 四、协程的创建 五、全局变量的共享问题 六、消息队列与互斥锁 七、池化技术 进程是系统分配资源的基本单位,线程是CPU调度的基本单位。 一个进程可包含多个线程,一个线程可包含多个协程,协程就是最小的任务执行单位

    2024年02月13日
    浏览(31)
  • Java/Python/Go不同开发语言在进程、线程和协程的设计差异

    在多线程项目开发时,最常用、最常遇到的问题是 1,线程、协程安全 2,线程、协程间的通信和控制 本文主要探讨不同开发语言go、java、python在进程、线程和协程上的设计和开发方式的异同。 进程 进程是 操作系统进行资源分配的基本单位,每个进程都有自己的独立内存空

    2024年01月23日
    浏览(33)
  • Python 华为面试手撕代码 + 八股文,机器学习参数调节,损失函数,激活函数,线程、进程和协程

    一、手撕代码:力扣原题905 二、八股文部分:有点紧张,忘了好多东西 1.深度学习模型优化的方法有哪些? 深度学习模型的优化策略包括以下几个方面: (1)选择合适的激活函数:激活函数对模型的表达能力和收敛速度有很大影响,常用的激活函数包括ReLU、Sigmoid、Tanh等。

    2024年02月09日
    浏览(32)
  • 操作系统进程线程(一)—进程线程协程区别、多进程多线程、进程调度算法、进程线程通信

    定义上 进程: 资源分配和拥有 的基本单位,是调度的基本单位。 运行一个可执行程序会创建一个或者多个进程;进程就是运行起来的程序 线程:程序 执行 基本单位,轻量级进程。 每个进程中都有唯一的主线程 ,主线程和进程是相互依赖的关系。 协程: 用户态 的轻量级

    2024年02月01日
    浏览(34)
  • 什么是进程、线程、协程

    我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序则是具有某种功能的程序,程序是运行于操作系统之上的。 进程是一个具有一定独立功能的程序在一个数据集上

    2024年02月13日
    浏览(25)
  • 进程,线程,协程

    1、进程 进程是具有一定独立功能的程序关于某个​​数据集​​合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销

    2024年02月11日
    浏览(33)
  • 线程 进程 协程 区别

    在并发编程中,\\\"线程\\\"和\\\"协程\\\"都是用于实现并发执行的概念,但它们有一些重要的区别。 线程(Thread): 线程是操作系统的概念,是操作系统调度的最小执行单位,是进程中的一个实体,表示程序执行的基本单元。 线程由操作系统内核调度和管理,它拥有自己的执行上下文

    2024年02月04日
    浏览(52)
  • Linux的进程,协程和线程

    Linux的进程、协程和线程是计算机科学中重要的概念,它们在操作系统和并发编程中发挥着关键的作用。让我们逐个详解这些概念,并讨论它们之间的关系。 进程是操作系统中的一个执行单元,它包含了程序执行所需的所有资源,如内存空间、文件描述符、寄存器等。 进程是

    2024年01月23日
    浏览(29)
  • 1.Unity协程、进程、线程的区别

    1、 进程 拥有自己独立的堆和栈,堆和栈都不共享,进程由操作系统调度。 2、 线程 有自己独立的栈和共享的堆,栈不共享,堆共享,标准的线程也是由系统调度。 3、 协程 有自己独立的栈和共享的堆,栈不共享,堆共享,协程由程序员在协程的代码里面调度。 协程多与线

    2024年02月03日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包