进程,线程,协程

进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

​ 用大白话说就是系统执行某一项过程的行为,比如你用浏览器在线播放器播放一个神奇的小视频,而播放小视频这个行为就是一个进程。如果你决定缓存有点慢,又打开了一个新浏览器窗口,选择了另一个神奇的小视频,这就是两个进程。所以进程才说是一段程序的执行过程,而不是运行某个程序。所以记住运行一个程序会运行一个或者一个以上的进程。

线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

还是大白话解释,还用浏览器在线播放小视频解释,比如再播放的时候一边播放一边缓存,而缓存如果比播放快的话,就很明显发现播放时间条和缓存条是分开的,也就是两个线程做不同的事情。

协程:协程是一种任务调度机制,它可以让你用逻辑流的顺序去写控制流,而且还不会导致操作系统级的线程阻塞。所以说协程本身就是一种对线程资源分配的合理应用的方式。

对于这个概念,网上很多说法,但是简单的说就是:可以在单线程中切换其行为的方式。前面说过python的中的一个GIL(全局解释器锁详情)中说过,python在某一个时刻只能执行一个线程,但是在IO的时候就会释放这个锁,这个时候有时会傻傻等待IO的返回结果,在按照逻辑顺序执行下去,而协程却可以调度这个线程去做其他事情,等IO执行完毕后在回来执行其后面操作。

异步同步与并行并发

异步和同步,很多人会将其和并行和并发混淆,但是其确实两个不同的定义,所以我们简单的说一下吧。

**并发 **:当有多个线程在操作时,如果系统只有一个CPU(而此cp是单核),则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。这种方式我们称之为并发。

并行:当系统有一个以上CPU(如果单核需要多个cpu,如果是多核的化,一个cpu也可以)时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行。

**同步:**当执行某一个程序的时候,会按照第一步,第二步等 顺序执行,也就是说当第一步执行完毕后,第二步才会执行。如果第一步执行需要时间,那也是等着其执行完毕才可以执行下一步。

​ 同步举例:就是看两个人在饭店吃饭(分别两桌,不是一起的),第一个客人点了一道烤全鸭,第二个客人下单一个拍黄瓜。厨子看见第一个客人小程序下单,就开始做烤鸭c,然后等了半个小时做完,然后上菜给第一个顾客。忙完第一个顾客的。然后看第二个订单,然后就做开始做拍黄瓜,最后给第二个客人上菜。

异步: 异步是指进程不需要一直等待下去,而是继续执行下面的操作,不管其他进程的状态,当有信息返回的时候会通知进程进行处理,这样就可以提高执行的效率了,即异步是我们发出的一个请求,该请求会在后台自动发出并获取数据,然后对数据进行处理,在此过程中,我们可以继续做其他操作,不管它怎么发出请求,不关心它怎么处理数据。

​ 异步举例:还是那个例子,就是看两个人在饭店吃饭(分别两桌,不是一起的),第一个客人点了一道烤全鸭,第二个客人下单一个拍黄瓜。厨子看见第一个客人小程序下单,就开始做烤鸭,然后将鸭子放进炉子,厨子一看还有一个订单,然后就开始做拍黄瓜,然后一边注意着烤鸭是否烤好。如果拍黄瓜做的好了,烤鸭还没有好,就先上拍黄瓜。

python 基础 进程,线程,协程,并发并行,异步同步的定义相关推荐

  1. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之OS_Part_1整起(进程线程协程并发并行、进程线程切换进程间通信、死锁\进程调度策略、分段分页、交换空间、OS三大调度机制)

    PART0:OS,这货到底是个啥? OS,是个啥? OS的结构们: 存储器: 存储器的层次结构: 内存:我们的程序和数据都是存储在内存,我们的程序和数据都是存储在内存,每一个字节都对应一个内存地址.内 ...

  2. Python之进程+线程+协程(异步、selectors模块、阻塞、非阻塞IO)

    文章目录 一.IO多路复用 二.selectors模块 本篇文字是关于IO多路复用的更深入一步的总结,上一篇 Python之进程+线程+协程(事件驱动模型.IO多路复用.select与epoll)对I ...

  3. Python之进程+线程+协程(并发与并行、GIL锁、同步锁、死锁、递归锁)

    文章目录 一.并发与并行 二.同步与异步 三.线程锁 1.GIL全局解释器锁 2.同步锁 3.死锁 4.递归锁 在Python中GIL解释器锁.同步锁.死锁.递归锁都是什么?怎么这么多锁,它们都是用来 ...

  4. Python之进程+线程+协程(事件驱动模型、IO多路复用、select与epoll)

    文章目录 一.事件驱动模型 二.IO多路复用 本篇文章是关于涉及网络编程与协程.进程之间结合的内容,其中事件驱动模型.IO多路复用.select与epoll的使用等方面的知识 一.事件驱动模型 1.事 ...

  5. Python之进程+线程+协程(进程的本质 与 threading线程模块)

    文章目录 基本概念 threading线程模块 本篇开始分析Python中的并发程序,也就是进程.线程.协程序的使用.由于是用自己的语言总结的,因此比较大白话,或者叫通俗易懂.而且很多细节方面没有具体 ...

  6. Python之进程+线程+协程(multiprocessing多进程模块)

    前几篇的多线程模块的各种规则和用法,本篇则是关于多进程模块的内容 1.multiprocessing的介绍 在Python中,由于有GIL解释器锁的存在,多线程就根本不是本质意义上的多线程,而是一个主 ...

  7. Python之进程+线程+协程(进程间通信、进程同步、进程池、回调函数)

    文章目录 进程间通信 进程同步 进程池 回调函数 本篇文章依然是进程.线程方面的内容,主要讲进程间的通信.进程队列.进程同步.进程池.进程同步和回调函数 进程间通信 进程就是两个独立的内存空间在运行, ...

  8. Python之进程+线程+协程(同步对象、信号量、队列)

    文章目录 Event同步对象 semaphore信号量 队列 本篇是关于Python进程方面的内容了,主要是Event同步对象,信号量和队列 Event同步对象 1.概念: 我们可以对一个线程set一 ...

  9. Python之进程+线程+协程(生产者消费者模型)

    本篇主要总结一下非常有名的生成者消费者模型 概念引用 1.为什么要使用生产者和消费者模型? 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程.在多线程开发当中,如果生产者处理速度很快, ...

  10. linux的进程/线程/协程系列5:协程的发展复兴与实现现状

    协程的发展复兴与实现现状 前言 本篇摘要: 1. 协同制的发展史 1.1 协同工作制的提出 1.2 自顶向下,无需协同 1.3 协同式思想的应用 2. 协程的复兴 2.1 高并发带来的问题 2.2 制 ...

最新文章

  1. oracle 11g RAC Grid Infrastructure
  2. UnderScore的使用实例记录
  3. 操作系统的运行机制和体系结构
  4. 超形象!著名的三角不等式演示动图!
  5. 谷歌服务器——为什么选择Jetty?
  6. Mybatisplus代码生成 之SpringBoot适配MYSQL和ORACLE
  7. 最短路(HDU-2544)
  8. 设计模式--观察者模式--Java实现
  9. gitee添加成员_成员权限管理,到底能有多精细?
  10. lsof -Pni4 | grep LISTEN | grep php
  11. 树莓派(0) : 树莓派4系统烧录、开机配置、网络连接、静态ip、开启root账号及ssh
  12. 2021中青杯数学建模B题
  13. 浅析PWM控制电机转速的原理
  14. 从月薪3000到月薪过万:做什么工作才能过上想要的生活
  15. Vins-Fusion运行kitti,euroc和tum数据集并使用evo评估
  16. 阿里云OSS域名配置及简单上传
  17. f2fs学习笔记 -11. f2fs gc
  18. html5页面缓存设置
  19. 谷歌翻译转换html,HTML – 谷歌翻译网站
  20. Swan Song Beta冲刺阶段博客目录

热门文章

  1. 蒲公英 · JELLY技术周刊 Vol.03
  2. 搞懂平衡二叉树的左旋右旋双旋(Java实现)
  3. 用Python讲述冯绍峰和赵丽颖的爱情故事
  4. uibot和按键精灵区别_uibot学习心得
  5. 任正非谈:华为会怎么失败,华为会怎么垮掉?
  6. 全志A40i按键驱动
  7. unity改变材质参数
  8. 橘子笔记~Java基础~Day01
  9. 毕业设计So Easy:社区道闸门禁和人员考勤物联网管理系统
  10. 2019年天梯真题L1