mirror of
https://gitee.com/Vancouver2017/luban-lite.git
synced 2025-12-21 11:38:55 +00:00
V1.0.6
This commit is contained in:
102
packages/third-party/micropython-1.13.0/docs/std-librarys/uselect.md
vendored
Executable file
102
packages/third-party/micropython-1.13.0/docs/std-librarys/uselect.md
vendored
Executable file
@@ -0,0 +1,102 @@
|
||||
## **uselect** – 等待流事件
|
||||
|
||||
`uselect` 模块提供了等待数据流的事件功能。
|
||||
|
||||
### 常数
|
||||
|
||||
#### **select.POLLIN** - 读取可用数据
|
||||
|
||||
#### **select.POLLOUT** - 写入更多数据
|
||||
|
||||
#### **select.POLLERR** - 发生错误
|
||||
|
||||
#### **select.POLLHUP** - 流结束/连接终止检测
|
||||
|
||||
### 函数
|
||||
|
||||
#### **select.select**(rlist, wlist, xlist[, timeout])
|
||||
监控对象何时可读或可写,一旦监控的对象状态改变,返回结果(阻塞线程)。这个函数是为了兼容,效率不高,推荐用 `poll` 函数 。
|
||||
|
||||
```
|
||||
rlist:等待读就绪的文件描述符数组
|
||||
wlist:等待写就绪的文件描述符数组
|
||||
xlist:等待异常的数组
|
||||
timeout:等待时间(单位:秒)
|
||||
```
|
||||
示例:
|
||||
|
||||
```python
|
||||
def selectTest():
|
||||
global s
|
||||
rs, ws, es = select.select([s,], [], [])
|
||||
#程序会在此等待直到对象s可读
|
||||
print(rs)
|
||||
for i in rs:
|
||||
if i == s:
|
||||
print("s can read now")
|
||||
data,addr=s.recvfrom(1024)
|
||||
print('received:',data,'from',addr)
|
||||
```
|
||||
|
||||
### Poll 类
|
||||
|
||||
#### **select.poll**()
|
||||
创建 poll 实例。
|
||||
|
||||
示例:
|
||||
|
||||
```
|
||||
>>>poller = select.poll()
|
||||
>>>print(poller)
|
||||
<poll>
|
||||
```
|
||||
|
||||
#### **poll.register**(obj[, eventmask])
|
||||
注册一个用以监控的对象,并设置被监控对象的监控标志位 flag。
|
||||
|
||||
```
|
||||
obj:被监控的对象
|
||||
flag:被监控的标志
|
||||
select.POLLIN — 可读
|
||||
select.POLLHUP — 已挂断
|
||||
select.POLLERR — 出错
|
||||
select.POLLOUT — 可写
|
||||
```
|
||||
|
||||
#### **poll.unregister**(obj)
|
||||
解除监控的对象的注册。
|
||||
|
||||
```
|
||||
obj:注册过的对象
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```
|
||||
>>>READ_ONLY = select.POLLIN | select.POLLHUP | select.POLLERR
|
||||
>>>READ_WRITE = select.POLLOUT | READ_ONLY
|
||||
>>>poller.register(s, READ_WRITE)
|
||||
>>>poller.unregister(s)
|
||||
```
|
||||
|
||||
#### **poll.modify**(obj, eventmask)
|
||||
修改已注册的对象监控标志。
|
||||
|
||||
```
|
||||
obj:已注册的被监控对象
|
||||
flag:修改为的监控标志
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```
|
||||
>>>READ_ONLY = select.POLLIN | select.POLLHUP | select.POLLERR
|
||||
>>>READ_WRITE = select.POLLOUT | READ_ONLY
|
||||
>>>poller.register(s, READ_WRITE)
|
||||
>>>poller.modify(s, READ_ONLY)
|
||||
```
|
||||
|
||||
#### **poll.poll**([timeout])
|
||||
等待至少一个已注册的对象准备就绪。返回 (obj, event, ...) 元组, event 元素指定了一个流发生的事件,是上面所描述的 `select.POLL*`常量组合。 根据平台和版本的不同,在元组中可能有其他元素,所以不要假定元组的大小是 2 。如果超时,则返回空列表。
|
||||
|
||||
更多内容可参考 [uselect](http://docs.micropython.org/en/latest/pyboard/library/uselect.html) 。
|
||||
Reference in New Issue
Block a user