> 技术文档 > python协程与异步并发,同步与阻塞,异步与非阻塞,Python异步IO、协程与同步原语介绍,协程的优势和劣势

python协程与异步并发,同步与阻塞,异步与非阻塞,Python异步IO、协程与同步原语介绍,协程的优势和劣势


协程与异步

软件系统的并发

使用异步IO,无非是我们提的软件系统的并发,这个软件系统,可以是网络爬虫,也可以是web服务等

并发的方式有多种,多线程,多进程,异步IO等

多线程和多进程更多应用于CPU密集型的场景,比如科学计算的事件都消耗在CPU上面,利用多核CPU来分担计算任务

多线程和多进程之间的场景切换和通讯代价很高,不适合IO密集型的场景,而异步IO就是非常适合IO密集型的场景,例如网络爬虫和web服务。

IO就是读写磁盘、读写网络的操作,这种读写速度比读写内存、cpu缓存慢得多,前者的耗时是后者的成千上万倍甚至更多,这就导致,IO密集型的场景99%以上的事件都花费在了IO等待的时间上面,异步IO就是把CPU从漫长的等待中解放出来的方法。

任务类型

计算型:CPU一直在忙(多线程可以提高IO,所以多线程适合计算型)
IO型:一直在网络交互(单线程密集的IO,CPU在长时间做等待,适合异步IO效率更高)python协程与异步并发,同步与阻塞,异步与非阻塞,Python异步IO、协程与同步原语介绍,协程的优势和劣势

同步、异步与阻塞、非阻塞的区别

同步、异步:方法论

阻塞、非阻塞:现象

处理IO,一种现象(结果)就是等IO处理完才去做别的事情,这就是阻塞
另一种现象是先发一个处理IO的命令就去做别的事情,等IO处理结束了再来对IO处理结果进行处理,这就是非阻塞。
阻塞是浪费时间的,所以我们要想办法解决阻塞使整个流程变成非阻塞,那么应