Python Reactor开发总结 -- 语法和python类使用 python.select.select

本文深入探讨了Python中select.select()函数的使用方法、平台依赖性、输入参数类型及功能特性,包括等待读写条件及超时机制,以及如何在不同场景下灵活运用这一系统级I/O多路复用API。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

select.select(rlist, wlist, xlist[, timeout])

 

> 平台依赖性:

 Windows只支持socket作为fd,不支持文件的fd

 Linux 和Unix平台都支持

 

 

> 输入的文件描述符号可以为如下几种情况:

python file objects: 

              1. sys.stdin  

              2. open()   或者 os.popen()

              3. socket.socket()

              4. 其他可以调用fileno()的对象返回的文件描述符号(这个是真实的 fd,不仅仅是一个随机整数)


> 前三个参数是 ‘waitable objects’的序列,要么是整数代表的fd,或者是由fileno()返回的对象才能作为三个序列的元素

rlist: wait until ready for reading
wlist: wait until ready for writing
xlist: wait for an “exceptional condition” (see the manual page for what your system considers such a condition)

三个参数是否全为空是平台相关的,Unix系统是可以全为空的,Windows不能全为空.

Unix全为空的话,可以作为定时器用了。

 

> timeout 参数

timeout参数是浮点数代表的参数,单位是seconds

timeout参数省略(默认为None),则代表永远block直到有一个fd准备好。

timeout = 0, 代表不会block,或者(specifies a poll)

 

> return 参数

返回值为三个list,包含三个已经准备好的fd列表(不会超过输入三个参数)。

当timeout后还没有fd准备好,则返回三个空列表([],[],[])

 

 

python 的 List Comprehensions语法:

这个语法的目的是用于创建列表,其他相似的语法还有(map,filter, zip 和 lambda)

[f(x) 跟随 0 个 或多个 for 或 if 子句]

[f(x)]

[f(x) for x]

[f(x) for x... if .....]

[f(x, y) for x..for y...]

[f(x, y) for x.. if ..... for y... if ....]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值