summaryrefslogtreecommitdiff
path: root/docs/library/uselect.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/library/uselect.rst')
-rw-r--r--docs/library/uselect.rst78
1 files changed, 78 insertions, 0 deletions
diff --git a/docs/library/uselect.rst b/docs/library/uselect.rst
new file mode 100644
index 000000000..e330207db
--- /dev/null
+++ b/docs/library/uselect.rst
@@ -0,0 +1,78 @@
+:mod:`uselect` -- wait for events on a set of streams
+========================================================================
+
+.. module:: uselect
+ :synopsis: wait for events on a set of streams
+
+|see_cpython_module| :mod:`python:select`.
+
+This module provides functions to efficiently wait for events on multiple
+streams (select streams which are ready for operations).
+
+Functions
+---------
+
+.. function:: poll()
+
+ Create an instance of the Poll class.
+
+.. function:: select(rlist, wlist, xlist[, timeout])
+
+ Wait for activity on a set of objects.
+
+ This function is provided by some MicroPython ports for compatibility
+ and is not efficient. Usage of :class:`Poll` is recommended instead.
+
+.. _class: Poll
+
+class ``Poll``
+--------------
+
+Methods
+~~~~~~~
+
+.. method:: poll.register(obj[, eventmask])
+
+ Register *obj* for polling. *eventmask* is logical OR of:
+
+ * ``select.POLLIN`` - data available for reading
+ * ``select.POLLOUT`` - more data can be written
+ * ``select.POLLERR`` - error occurred
+ * ``select.POLLHUP`` - end of stream/connection termination detected
+
+ *eventmask* defaults to ``select.POLLIN | select.POLLOUT``.
+
+.. method:: poll.unregister(obj)
+
+ Unregister *obj* from polling.
+
+.. method:: poll.modify(obj, eventmask)
+
+ Modify the *eventmask* for *obj*.
+
+.. method:: poll.poll([timeout])
+
+ Wait for at least one of the registered objects to become ready. Returns
+ list of (``obj``, ``event``, ...) tuples, ``event`` element specifies
+ which events happened with a stream and is a combination of ``select.POLL*``
+ constants described above. There may be other elements in tuple, depending
+ on a platform and version, so don't assume that its size is 2. In case of
+ timeout, an empty list is returned.
+
+ Timeout is in milliseconds.
+
+ .. admonition:: Difference to CPython
+ :class: attention
+
+ Tuples returned may contain more than 2 elements as described above.
+
+.. method:: poll.ipoll([timeout])
+
+ Like :meth:`poll.poll`, but instead returns an iterator which yields
+ callee-owned tuples. This function provides efficient, allocation-free
+ way to poll on streams.
+
+ .. admonition:: Difference to CPython
+ :class: attention
+
+ This function is a MicroPython extension.