多线程,多进程,协程,IO多路复用

关于Python

Python有多进程,且原生支持协程,但是由于GIL全局锁的存在,Python只有假多线程,即单线程轮流执行多个任务,常用于IO任务的阻塞等待当中。

多线程

即一种基于内核态工作的异步运行方式。对于多核CPU而言,只有多线程和多进程才能真正的充分调用CPU的多核工作。但是由于用户态向内核态切换时以及中断时的时间开销较大,一般只用于计算密集任务,不用于IO密集任务。

多进程

进程拥有独立的运行栈空间,相当于一个新的程序,一个进程可以有多个线程。进程也是基于内核态工作的。

多进程与多线程的区别

多线程实质是多任务,共享内存空间,线程间分享数据较为容易
多进程实质是多个独立程序,不共享内存空间,分享数据困难。多进程创建与销毁消耗资源与时间大于多线程。多进程与主进程交换数据时,必须对类进行序列化与反序列化,造成极大的性能损耗。

协程

Python与golang原生支持协程特性。协程的是用户态的多线程,即一个线程轮流执行多个任务,但相比于Python中的假多线程,协程并不真正创建线程,减少了内核态相关的损耗。
换言之,协程不是真正的异步。
多线程处理并行问题,协程处理并发问题。
协程的真正应用是IO并发领域,可以有效利用IO阻塞时间。

一图流概括

image

IO多路复用

文章链接:https://blog.csdn.net/Squid87/article/details/123452472

posted @   adamaik  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示