uselect
– Wait for events¶
This module provides functions to efficiently wait for events on multiple streams.
Note
This module is not available on the BOOST Move hub.
- poll() uselect.Poll ¶
Creates an instance of the Poll class.
- class Poll¶
- register(obj: IO) None ¶
- register(obj: IO, eventmask: int) None
Register stream
obj
for polling.eventmask
is logical OR of:Note that flags like
POLLHUP
andPOLLERR
are not valid as input eventmask (these are unsolicited events which will be returned frompoll()
regardless of whether they are asked for). This semantics is per POSIX.eventmask
defaults toPOLLIN | POLLOUT
.It is OK to call this function multiple times for the same
obj
. Successive calls will updateobj
’s eventmask to the value ofeventmask
(i.e. will behave asmodify()
).
- unregister(obj: IO) None ¶
Unregister
obj
from polling.
- modify(obj: IO, eventmask: int) None ¶
Modify the
eventmask
forobj
. Ifobj
is not registered,OSError
is raised with error ofENOENT
.
- poll() List[Tuple[IO, int]] ¶
- poll(timeout: int) List[Tuple[IO, int]]
Wait for at least one of the registered objects to become ready or have an exceptional condition, with optional timeout in milliseconds (if
timeout
arg is not specified or -1, there is no timeout).Returns list of (
obj
,event
, …) tuples. There may be other elements in tuple, depending on a platform and version, so don’t assume that its size is 2. Theevent
element specifies which events happened with a stream and is a combination ofPOLL*
constants described above. Note that flagsPOLLHUP
andPOLLERR
can be returned at any time (even if were not asked for), and must be acted on accordingly (the corresponding stream unregistered from poll and likely closed), because otherwise all further invocations ofpoll()
may return immediately with these flags set for this stream again.In case of timeout, an empty list is returned.
- ipoll() Iterator[Tuple[IO, int]] ¶
- ipoll(timeout: int) Iterator[Tuple[IO, int]]
- ipoll(timeout: int, flags: int) Iterator[Tuple[IO, int]]
Like
poll()
, but instead returns an iterator which yields a callee-owned tuple. This function provides an efficient, allocation-free way to poll on streams.If
flags
is 1, one-shot behavior for events is employed: streams for which events happened will have their event masks automatically reset (equivalent topoll.modify(obj, 0)
), so new events for such a stream won’t be processed until new mask is set withmodify()
. This behavior is useful for asynchronous I/O schedulers.