关于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!