关于python select.select调用的返回值

在python的SocketServer.py代码中,我找到下面的代码。

r, w, e = _eintr_retry(select.select, [self], [], [], poll_interval)
if self in r:
    self._handle_request_noblock()

上面的if语句是否必要? 由于只有“自我”被传递给选择调用,我不希望其他文件描述符出现在返回的文件描述符列表中。

我问这个问题的原因是,我是否应该遵循上面的风格,或者像下面这样的东西就足够了?

r, w, e = select.select( [self], [], [], poll_interval)
if  r:
    ...

if r:

是不一样的

if self in r:

您可以阅读select.select文档:

空序列是允许的,但三个空序列的接受是平台相关的。

[...]

返回值是准备好的对象列表的三倍:前三个参数的子集。 如果在没有文件描述符准备就绪的情况下达到超时,则返回三个空列表

由于在模块poll_interval一个变量poll_interval传递给该函数,因此返回空列表时可能会遇到一个情况。 一个空的列表将通过简单的if r: check!

链接地址: http://www.djcxy.com/p/9659.html

上一篇: Regarding return value of python select.select call

下一篇: input() and sys.stdin misbehaves on CTRL