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.closed
проверяет дескриптор,Epoll.fileno()
номер файлового дескриптора,Epoll.fromfd()
создает объект Epoll
,Epoll.register()
регистрирует дескриптор,Epoll.modify()
изменяет зарегистрированный дескриптор,Epoll.unregister()
удаляет зарегистрированный дескриптор,Epoll.poll()
ждет событий,eventmask
- маска событий.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 | Игнорируется. |