2015-04-06 3 views
0

В коде SocketServer.py python я нахожу следующий код.Что касается возвращаемого значения python select.select call

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

Вышеуказанный, если заявление необходимо? Поскольку для выбора вызова передается только «я», я не ожидаю наличия другого дескриптора файла в возвращаемом списке дескриптора файла.

Причина, по которой я прошу об этом, должен ли я следовать описанному выше стилю или что-то вроде следующего достаточно?

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

ответ

0
if r: 

не то же самое, как

if self in r: 

Вы можете прочитать на select.select документации:

Пустые последовательности допускается, но принятие трех пустых последовательностей от платформы зависимый.

[...]

Возвращаемое значение является тройкой списков объектов, которые готовы: подмножества первых трех аргументов. Когда тайм-аут достигнут без добавления файлового дескриптора, три пустых списка: .

Поскольку в модуле переменная poll_interval передается функции, вы можете получить случай, когда возвращаются пустые списки. Пустой список пройдет простую проверку if r:!

Смежные вопросы