通俗的来了解下python中的进程,线程和协程的关系和他们的区别
2020-06-03 05:58
267 查看
先来说说他们的定义
进程
- 进程是系统资源分配的最小单位
- 一个正在运行的程序比如QQ,微信等就是一个线程
- 进程之间的内存都是独立的,不能共享变量
- 运行的开销也特别大
线程
- 线程是系统调度的最小单位
- 同一个进程下的线程资源是共享的
- 运行的开销较少
协程
- 协程在单线程下实现并发效果
- 协程遇IO自动切换
- 协程保留上一次调用状态
- 运行的开销小
进程,线程和协程间的关系的通俗描述
现在有一家工厂想要生产某个商品:
1、现在他要开一条流水线去生产这批商品,这时候这条为了生产商品而产生的流水线可以称之为进程 ! 有了流水线(进程)不能直接直接进行生产(工作)得有工人(线程)才能开始生产
2、但是你光有流水线是不行的,因为现在的流水线还没有工人,不能进行生产,在这条流水线工作的工人可以称之为线程 ! 注意这时的工人(线程)是由工厂老板(系统)直接调用
3、 但是呢现在黑心的老板觉得这种效率远远不够他想出了几种办法:
- 首先呢他觉得流水线(线程)太少,导致效率的低下,所以就在流水线上加了更多的工人(多线程)
- 然后他又觉的在一条流水生产的话 还是效率低这时候就又会增加多个流水线以提高效率(多线程,多进程)
- 当然老板的欲望还是不满足,他把所有的外围因素搞定后,就开始从工人(线程)的身上找问题,原来的工作模式是当前一个工人在做自己工作的时候,后面的工人就没事可做(同步阻塞)只能在后面等待,改变工作模式之后就成为了,第一个人在工作的时候,第二个人先去干其他有用的事情(异步非阻塞)这样就能把效率提高(协程)
区别
- 一个程序至少有一个进程,一个进程至少有一个线程
- 线程是划分尺度较小的进程(资源比进程占用的少),使得多线程程序的并发性高。
- 进程在执行的过程中拥有独立的内存单元,而多个线程共享这块内存空间,从而极大的提高了程序的运行效率。
- 线程不能独立执行,必须依存在进程中。
- 进程是资源分配的单位,线程是操作系统调度的单位
- 协程,,资源很小,效率高
进程切换需要的资源很最大,效率很低 - 线程执行开销小,但不利于资源的管理和保护;而进程正相反
参考链接:
https://www.cnblogs.com/applelife/p/10983551.html
相关文章推荐
- 进程、线程和协程的区别且它们之间的关系
- python基础===进程,线程,协程的区别(转)
- python中的进程、线程、协程,它们的区别和联系
- 详解线程、了解进程与线程的区别以及线程分离与结合属性
- 白话Python 进程,线程,协程
- Java进程和线程关系及区别
- 进程,线程,协程的联系与区别。
- 进程(Process)和线程(Thread)的关系和区别
- Python:线程、进程与协程(5)——multiprocessing模块(2)
- (2.3.1.1)进程和线程关系及区别
- python学习——进程、线程、协程对比
- 进程与线程之间的关系和区别 及 CPU调度
- 线程和进程的关系与区别
- 进程与线程关系及区别
- 进程(Process)和线程(Thread)的关系和区别
- python 进程、线程、协程
- 关于进程、线程、协程在python中的使用问题
- Python之线程、进程和协程
- 简述Python中的进程、线程、协程
- Python 中的进程、线程、协程、同步、异步、回调