您的位置:首页 > 编程语言 > Python开发

通俗的来了解下python中的进程,线程和协程的关系和他们的区别

2020-06-03 05:58 267 查看

先来说说他们的定义

进程

  1. 进程是系统资源分配的最小单位
  2. 一个正在运行的程序比如QQ,微信等就是一个线程
  3. 进程之间的内存都是独立的,不能共享变量
  4. 运行的开销也特别大

线程

  1. 线程是系统调度的最小单位
  2. 同一个进程下的线程资源是共享的
  3. 运行的开销较少

协程

  1. 协程在单线程下实现并发效果
  2. 协程遇IO自动切换
  3. 协程保留上一次调用状态
  4. 运行的开销小

进程,线程和协程间的关系的通俗描述

现在有一家工厂想要生产某个商品:
1、现在他要开一条流水线去生产这批商品,这时候这条为了生产商品而产生的流水线可以称之为进程 ! 有了流水线(进程)不能直接直接进行生产(工作)得有工人(线程)才能开始生产
2、但是你光有流水线是不行的,因为现在的流水线还没有工人,不能进行生产,在这条流水线工作的工人可以称之为线程 ! 注意这时的工人(线程)是由工厂老板(系统)直接调用
3、 但是呢现在黑心的老板觉得这种效率远远不够他想出了几种办法:

  • 首先呢他觉得流水线(线程)太少,导致效率的低下,所以就在流水线上加了更多的工人(多线程)
  • 然后他又觉的在一条流水生产的话 还是效率低这时候就又会增加多个流水线以提高效率(多线程,多进程)
  • 当然老板的欲望还是不满足,他把所有的外围因素搞定后,就开始从工人(线程)的身上找问题,原来的工作模式是当前一个工人在做自己工作的时候,后面的工人就没事可做(同步阻塞)只能在后面等待,改变工作模式之后就成为了,第一个人在工作的时候,第二个人先去干其他有用的事情(异步非阻塞)这样就能把效率提高(协程)

区别

  • 一个程序至少有一个进程,一个进程至少有一个线程
  • 线程是划分尺度较小的进程(资源比进程占用的少),使得多线程程序的并发性高。
  • 进程在执行的过程中拥有独立的内存单元,而多个线程共享这块内存空间,从而极大的提高了程序的运行效率。
  • 线程不能独立执行,必须依存在进程中。
  • 进程是资源分配的单位,线程是操作系统调度的单位
  • 协程,,资源很小,效率高
    进程切换需要的资源很最大,效率很低
  • 线程执行开销小,但不利于资源的管理和保护;而进程正相反

参考链接:
https://www.cnblogs.com/applelife/p/10983551.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: