uselect – 等待一组流上的事件¶
警告
虽然这个基于 MicroPython 的库可能可用于某些 CircuitPython 版本,但它不受支持,并且其功能在未来可能会发生重大变化。随着 CircuitPython 的不断发展,它可能会更改以更紧密地符合相应的标准 Python 库。如果您依赖它当前提供的任何非标准功能,您以后可能需要更改您的代码。
该模块实现了相应 CPython 模块的 一个子集,如下所述。有关更多信息,请参阅原始 CPython 文档: select.
该模块提供了有效等待多个
stream 对象上的事件 (选择准备好操作的流)的功能。
职能¶
- 
uselect.poll()¶
- 创建 Poll 类的实例。 
- 
uselect.select(rlist, wlist, xlist[, timeout])¶
- 等待一组对象的活动。 - 此功能由一些 MicroPython 端口提供以实现兼容性,并且效率不高。用法 - Poll推荐来代替。
班级Poll¶
方法¶
- 
poll.register(obj[, eventmask])¶
- 注册 - streamobj进行轮询。eventmask是以下的逻辑 OR:- uselect.POLLIN-可供阅读的数据
- uselect.POLLOUT- 可以写入更多数据
 - 需要注意的是标志像 - uselect.POLLHUP和- uselect.POLLERR是 不是为输入eventmask(这些是从返回未经请求的事件的有效- poll()不管他们是否被要求)。这个语义是每个 POSIX 的。- 事件掩码默认为. - uselect.POLLIN | uselect.POLLOUT.- 可以为同一个obj多次调用此函数。连续调用将更新OBJ的eventmask到的值 eventmask(即会表现为 - modify())。
- 
poll.unregister(obj)¶
- 从轮询中注销 obj。 
- 
poll.poll(timeout=-1, /)¶
- 等待至少一个已注册的对象准备就绪或出现异常情况,以毫秒为单位可选超时(如果 未指定超时arg 或 -1,则没有超时)。 - 返回 ( - obj,- event, …)元组列表。元组中可能还有其他元素,具体取决于平台和版本,因此不要假设其大小为 2。该- event元素指定流中发生了哪些事件,并且是- uselect.POLL*上述常量的组合。请注意,标志- uselect.POLLHUP和- uselect.POLLERR可以随时返回(即使没有被要求),并且必须相应地采取行动(相应的流从轮询中取消注册并可能关闭),否则所有进一步调用 的- poll()可能会立即返回并设置这些标志再次为这个流。- 如果超时,则返回一个空列表。 - 与 CPython 的区别 - 如上所述,返回的元组可能包含 2 个以上的元素。 
- 
poll.ipoll(timeout=-1, flags=0, /)¶
- 就像 - poll.poll(),而是返回一个迭代器,它产生一个 。此函数提供了高效、无需分配的方式来轮询流。- callee-owned tuples- 如果标志为 1,则采用事件的一次性行为:发生事件的流将自动重置其事件掩码(相当于),因此在使用 设置新掩码之前不会处理此类流的新事件。此行为对于异步 I/O 调度程序很有用。 - poll.modify(obj, 0)- poll.modify().- 与 CPython 的区别 - 这个函数是一个 MicroPython 扩展。