python:select --- 等待 I/O 完成
该模块提供了对 select() 和 poll() 函数的访问,这些函数在大多数操作系统中是可用的。在 Solaris 及其衍生版本上可用 devpoll(),在 Linux 2.5+ 上可用 epoll(),在大多数 BSD 上可用 kqueue()。注意,在 Windows 上,本模块仅适用于套接字;在其他操作系统上,本模块也适用于其他文件类型(特别地,在 Unix 上也适用于管道)。本模块不能用于常规文件,不能检测出(自上次读取文件后)文件是否有新数据写入。
备注 selectors 模块是在 select 模块原型的基础上进行高级且高效的 I/O 复用。推荐用户改用 selectors 模块,除非用户希望对 OS 级的函数原型进行精确控制。
该模块定义以下内容:
exception select.error
一个被弃用的 OSError 的别名。
在 3.3 版更改: 根据 PEP 3151,这个类是 OSError 的别名。
select.devpoll()
(仅支持 Solaris 及其衍生版本)返回一个 /dev/poll 轮询对象,请参阅下方 /dev/poll 轮询对象 获取 devpoll 对象所支持的方法。
devpoll() 对象与实例化时允许的文件描述符数量有关,如果在程序中降低了此数值,devpoll() 调用将失败。如果程序提高了此数值,devpoll() 可能会返回一个不完整的活动文件描述符列表。
新的文件描述符是 不可继承的。
3.3 新版功能.
在 3.4 版更改: 新的文件描述符现在是不可继承的。
select.epoll(sizehint=- 1, flags=0)
(仅支持 Linux 2.5.44 或更高版本)返回一个 edge poll 对象,该对象可作为 I/O 事件的边缘触发或水平触发接口。
flags 已经弃用且完全被忽略。但是,如果提供该值,则它必须是 0 或 select.EPOLL_CLOEXEC,否则会抛出 OSError 异常。
请参阅下方 边缘触发和水平触发的轮询 (epoll) 对象 获取 epoll 对象所支持的方法。
epoll 对象支持上下文管理器:当在 with 语句中使用时,新建的文件描述符会在运行至语句块结束时自动关闭。
新的文件描述符是 不可继承的。
在 3.3 版更改: 增加了 flags 参数。
在 3.4 版更改: 增加了对 with 语句的支持。新的文件描述符现在是不可继承的。
3.4 版后已移除: flags 参数。现在默认采用 select.EPOLL_CLOEXEC 标志。使用 os.set_inheritable() 来让文件描述符可继承。
select.poll()
(部分操作系统不支持)返回一个 poll 对象,该对象支持注册和注销文件描述符,支持对描述符进行轮询以获取 I/O 事件。请参阅下方 Poll 对象 获取 poll 对象所支持的方法。
s