关于Python
Python有多进程,且原生支持协程,但是由于GIL全局锁的存在,Python只有假多线程,即单线程轮流执行多个任务,常用于IO任务的阻塞等待当中。
多线程
即一种基于内核态工作的异步运行方式。对于多核CPU而言,只有多线程和多进程才能真正的充分调用CPU的多核工作。但是由于用户态向内核态切换时以及中断时的时间开销较大,一般只用于计算密集任务,不用于IO密集任务。
多进程
进程拥有独立的运行栈空间,相当于一个新的程序,一个进程可以有多个线程。进程也是基于内核态工作的。
多进程与多线程的区别
多线程实质是多任务,共享内存空间,线程间分享数据较为容易
多进程实质是多个独立程序,不共享内存空间,分享数据困难。多进程创建与销毁消耗资源与时间大于多线程。多进程与主进程交换数据时,必须对类进行序列化与反序列化,造成极大的性能损耗。
协程
Python与golang原生支持协程特性。协程的是用户态的多线程,即一个线程轮流执行多个任务,但相比于Python中的假多线程,协程并不真正创建线程,减少了内核态相关的损耗。
换言之,协程不是真正的异步。
多线程处理并行问题,协程处理并发问题。
协程的真正应用是IO并发领域,可以有效利用IO阻塞时间。
一图流概括
IO多路复用
文章链接:https://blog.csdn.net/Squid87/article/details/123452472
标签:协程,Python,线程,IO,进程,多线程 From: https://www.cnblogs.com/adamaik/p/17799568.html