阻塞I/O模型

在服务端开设多进程或多线程,进程池或线程池,其实还是没有解决IO问题

非阻塞I/O模型

该模型会长时间占用CPU但是不干活,让CPU不停地空转

实际应用中不考虑使用使用非阻塞I/O模型

I/O多路复用

当I/O多路复用监测一个对象时,效率不如阻塞I/O模型

但是I/O多路复用可以一次性监测很多对象

监测机制select是操作系统的功能,使用是需要导入select模块

select和poll检测的原理是for循环地检测每一对象,当循环到某个对象时,这个对象还是阻塞的,循环到下一个对象时,这个对象不阻塞了,要等到一圈

监控机制 Windows Linux 缺陷--改善
select 检测的对象特别多时,可能会出现很大的响应延时
poll 检测的对象特别多时,可能会出现很大的响应延时
epoll 给每一个监测对象绑定一个回调机制,一旦有响应,回调机制立刻发起提醒

异步IO

异步IO模型是所有模型中效率最高的,也是使用最广泛的

asyncio模块

异步框架:sanic,FastAPI,tornado

各模型之间的比较