在python的SocketServer.py代码中,我找到了以下代码。
r, w, e = _eintr_retry(select.select, [self], [], [], poll_interval)
if self in r:
self._handle_request_noblock()
以上if语句是否必要?由于只有“self”被传递给select调用,我不希望其他文件描述符出现在返回的文件描述符列表中。
我问这个的原因是,我是否应该按照上述方式或类似下面的内容就够了?
r, w, e = select.select( [self], [], [], poll_interval)
if r:
...
答案 0 :(得分:0)
if r:
与
不同if self in r:
您可以阅读select.select
文档:
允许空序列,但接受三个空序列 与平台有关。
[...]
返回值是准备好的对象列表的三倍: 前三个参数的子集。 达到超时时 如果没有文件描述符准备就绪,则会有三个空列表 返回强>
因为在模块中,变量poll_interval
被传递给函数,所以可能会出现返回空列表的情况。空列表将通过简单的if r:
检查!