1.select模块
select()和poll()函数可以在大多数操作平台上运行,epoll()只能在linux上运行。
exception select.error
模块异常
select.devpoll()
仅在Solaris和衍生产品上受支持。返回/dev/poll轮询对象
select.epoll(sizehint=-1, flags=0)
返回边沿轮询对象,可用作I / O事件的边沿或级别触发接口。
select.poll()
返回一个轮询对象,它支持注册和取消注册文件描述器,然后轮询它们的I / O事件;有关轮询对象支持的方法
select.kqueue()
仅在BSD上支持,返回一个内核队列对象
select.kevent(ident, filter=KQ_FILTER_READ, flags=KQ_EV_ADD, fflags=0, data=0, udata=0)
仅在BSD上支持,返回内核事件对象
select.select(rlist, wlist, xlist[, timeout])
这是Unix select()系统调用的简单接口。前三个参数是“等待对象”的序列:使用名为fileno()的无参数方法表示文件描述器或对象的整数返回这样一个整数:
- rlist:等待准备读取
- wlist:等待准备写入
- xlist:等待“异常条件”
select.PIPE_BUF
当管道已报告为准备写入select(),poll()或另一个接口时,可以写入的最小字节数而不会阻塞到管道这个模块。这不适用于其他类型的文件状对象,如套接字。
返回值是准备好的对象列表的三倍:前三个参数的子集。当超时到达没有文件描述器变为准备好时,返回三个空列表。
Polling Objects
Kqueue Objects
Kevent Objects
2.selectors模块
这个模块允许高层高效的 I/O 多路复用,建立在 select 模块原函数基础之上。
class selectors.SelectorKey
SelectorKey 是一个用来将文件对象关联到其底层文件描述符,选定的事件掩码和附加的数据的 namedtuple。它由 BaseSelector 的几种方法返回。
- fileobj():注册的文件对象
- fd():底层的文件描述符
- events():该文件对象必须等待的事件
- data:可选的与此文件对象关联的不透明数据:例如可以用来存储每个客户端的会话id
class selectors.BaseSelector
BaseSelector 用来等待多个文件对象的I/O 事件的准备。它支持文件流注册、 注销和带可选超时值的等待这些流的 I/O 事件的方法。它是一个抽象的基类,因此不能实例化。使用 DefaultSelector来替代 或者用 SelectSelector,KqueueSelector 等。如果您想要明确使用一种实现,和您的平台支持它。BaseSelector 和其具体的实现支持 上下文管理器 协议。
class selectors.DefaultSelector
默认选择器类使用在当前平台上可用的最有效的实现。这应该是大多数用户的默认选择。
class selectors.SelectSelector
基于select.select()的选择器。
class selectors.PollSelector
基于select.poll()的选择器。
class selectors.EpollSelector
基于select.epoll()的选择器
class selectors.DevpollSelector
基于select.devpoll()的选择器。