Сообщить об ошибке.

Функция epoll() модуля select в Python

Опрос файловых дескрипторов на наличие событий ввода-вывода

Синтаксис:

import select

# Поддерживается только в Linux 2.5.44 и новее.
epoll = select.epoll(sizehint=-1, flags=0)

Параметры:

  • sizehint=-1 -
  • flags=0 -

Возвращаемое значение:

Описание:

Функция epoll() модуля select возвращает объект пограничного опроса Epoll, который можно использовать как интерфейс Edge или Level Triggered для событий ввода-вывода.

Аргумент sizehint информирует epoll об ожидаемом количестве событий, которые необходимо зарегистрировать. Значение sizehint должно быть положительным или -1 (значение по умолчанию). Оно используется только в старых системах, где функция операционной системы epoll_create1() недоступна. В противном случае значение не принимается во внимание (хотя значение проверяется).

Аргумент flags устарел и полностью игнорируется. НО при передаче в функцию, его значение должно быть 0 или select.EPOLL_CLOEXEC или поднимется исключение OSError.

Объекты Epoll поддерживают протокол управления контекстом: при использовании с оператором with, новый файловый дескриптор автоматически закрывается в конце блока.

Новый дескриптор файла не наследуется.

Методы объекта опроса Epoll.


Epoll.close():

Метод Epoll.close() закрывает дескриптор управляющего файла объекта Epoll.

Epoll.closed:

Атрибут Epoll.closed True, если объект Epoll закрыт.

Epoll.fileno():

Метод Epoll.fileno() возвращает номер файлового дескриптора управляющего fd.

Epoll.fromfd(fd):

Метод Epoll.fromfd() создает объект Epoll из заданного файлового дескриптора fd.

Epoll.register(fd[, eventmask]):

Метод Epoll.register() регистрирует дескриптор fd с объектом Epoll.

Описание аргумента eventmask смотрите ниже.

Epoll.modify(fd, eventmask):

Метод Epoll.modify() изменяет зарегистрированный файловый дескриптор.

Описание аргумента eventmask смотрите ниже.

Epoll.unregister(fd):

Метод Epoll.unregister() удаляет зарегистрированный файловый дескриптор из объекта Epoll.

Изменено в Python 3.9: Метод больше не игнорирует ошибку EBADF.

Epoll.poll(timeout=None, maxevents=-1):

Метод Epoll.poll() ждет событий. Аргумент тайм-аут timeout в секундах (float)


Маска событий, аргумент eventmask:

КонстантаЗначение
select.EPOLLINДоступно для чтения
select.EPOLLOUTДоступно для записи
select.EPOLLPRIСрочные данные для чтения
select.EPOLLERRПроизошла ошибка с fd
select.EPOLLHUPПроизошло зависание fd
select.EPOLLETУстановите поведение триггера Edge, по умолчанию используется поведение Level Trigger
select.EPOLLONESHOT Установите одноразовое поведение. После того, как одно событие извлечено, fd внутренне отключен
select.EPOLLEXCLUSIVEПробуждает только один объект epoll, когда связанный fd имеет событие. По умолчанию (если этот флаг не установлен) пробуждает все объекты Epoll, опрашивающие fd.
select.EPOLLRDHUPОдноранговый узел потокового сокета закрыл соединение или завершил запись половины соединения.
select.EPOLLRDNORMЭквивалентно EPOLLIN
select.EPOLLRDBANDПриоритетный диапазон данных может быть считан
select.EPOLLWRNORMЭквивалентно EPOLLOUT
select.EPOLLWRBANDПриоритетные данные могут быть записаны
select.EPOLLMSGИгнорируется.