Python中IO多路复用的编程实现——select篇【python笔记】

Python中IO多路复用的编程实现——select篇【python笔记】

IO多路复用

定义:同时监控多个IO事件,当哪个IO事件准备就绪就执行哪个IO事件。以此形成可用同时操作多个IO的并发行为,避免一个IO阻塞,造成所有的IO都无法执行

IO准备就绪: 是一种IO必然要发生的临界状态

IO多路复用的编程实现

1.将IO设置为关注IO

2.将关注IO提交给内核监测

3.处理内核给我们反馈的准备就绪的IO

具体方案:python将以下三种方案都集中在了 select 模块中

select --> 支持 windows linux unix

poll   --> 支持 linux unix

epoll  --> 支持 linux unix

        import select

rs,ws,xs = select(rlist,wlist,xlist[,timeout])

功能:监控IO事件,阻塞等待IO事件发生

参数: rlist 列表 读列表 存放我们监控等待处理的IO事件

wlist 列表 写列表 存放我们要主动操作的IO事件

xlist 列表 我们要关注出错处理的IO事件

timeout 连接超时

注意:

1.wlist中如果有IO事件则select立即返回为ws

2.在处理IO过程中不要处理一个客户端长期占有服务端,使服务端无法运行到select的情况

3.IO多路复用占用计算机资源少,IO效率高


最后编辑于:2019/10/22作者: 牛逼PHP

发表评论