进程、线程、协程

爱⌒轻易说出口 提交于 2019-12-15 20:20:51

一、进程

  --定义:程序运行起来后,代码及程序所需要的资源(包含内存、变量、硬件等)的总和为一个进程。进程是资源分配的单位,可以理解为内存中分配的一块区域。

二、线程

  --定义:每个进程中默认会有一个线程,此线程即为主线程,主线程是CPU能够调度的最小单位,真正执行程序时,是线程在动态的执行代码,进程只是一个资源的总和。

三、协程

  --定义:协程也是一个线程,是一个在遇到IO阻塞进行任务切换的一个特殊的线程。协程通过gevent方法实现,gevent的底层实现是greenlet,greenlet的底层实现是yield,当程序(生成器)遇到yield时会阻塞,此时会返回到主程序中,主程序再去调度其他的函数。协程一定属于一个线程,因此协程肯定是通过并发实现的多任务。

四、相同点

  --三者都是实现多任务的一种方式

五、不同点

  --三者内存开销不一样,进程最大、线程次之、协程最小

  --进程是资源分配的最小单位,包含代码和资源

  --进程更稳定,一个进程的崩溃不会引起其他进程的崩溃

  --线程是CPU调度的最小单位,代码的真正执行时通过线程实现的

  --主线程的崩溃会引起其他线程的崩溃

  --协程也是一个线程,是一个可以任务切换的线程

  --协程需要的资源最少,效率最高,线程次之,进程最低

  --根据CPU核数不同,多进程、多线程可能是并行的,而协程肯定是并发的

六、使用时机

  --首推协程、然后线程、再然后进程

  --进程更稳定

  --线程节省资源 

  --协程效率最高  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!