知方号

知方号

select

这是一个明白直观的 Unix select() 系统调用接口。 前三个参数是产生“可等待对象”的可迭代对象:可以是代表文件描述符的整数,或是带有名为 fileno() 的返回这样的整数的无形参方法的对象:

rlist:等待,直到可以开始读取

wlist:等待,直到可以开始写入

xlist:等待“异常情况”(请参阅当前系统的手册,以获取哪些情况称为异常情况)

允许空的可迭代对象,但是否接受三个空的可迭代对象则取决于具体平台。 (已知在 Unix 上可行但在 Windows 上不可行。) 可选的 timeout 参数以一个浮点数表示超时秒数。 当省略 timeout 参数时该函数将阻塞直到至少有一个文件描述符准备就绪。 超时值为零表示执行轮询且永不阻塞。

返回值是三个列表,包含已就绪对象,返回的三个列表是前三个参数的子集。当超时时间已到且没有文件描述符就绪时,返回三个空列表。

可迭代对象中可接受的对象类型有 Python 文件对象 (例如 sys.stdin 以及 open() 或 os.popen() 所返回的对象),由 socket.socket() 返回的套接字对象等。 你也可以自定义一个 wrapper 类,只要它具有适当的 fileno() 方法(该方法要确实返回一个文件描述符,而不能只是一个随机整数)。

备注

在 Windows 上不接受文件对象,但可以接受套接字。 在 Windows 上,底层的 select() 函数由 WinSock 库提供,且不会处理不是源自 WinSock 的文件描述符。

在 3.5 版本发生变更: 现在,当本函数被信号中断时,重试超时将从头开始计时,不会抛出 InterruptedError 异常。除非信号处理程序抛出异常(相关原理请参阅 PEP 475)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。