python select

本文详细介绍了select函数的功能及其在不同场景下的应用。select函数可用于检查一个或多个套接口的状态,包括可读性、可写性和错误状态。文章还讨论了如何使用rlist、wlist和xlist参数,并解释了它们在不同套接口类型下的含义。
select函数原型:
    select.select(rlistwlistxlist[, timeout])
    本函数用于确定一个或多个套接口的状态。对每一个套接口,调用者可查询它的可读性、可写性及错误状态信息。
    select是一个直接调用unix中select()的简单接口。前三个参数都是‘等待对象’的序列:整型的文件描述符或者是一个无参数方法fileno()返回的整数:


  • rlist: 等待直到准备好读
  • wlist: 等待直到准备好写
  • xlist: 等待一种意外的情况 (在手册中查看你的系统中认为的那种情况)

      rlist参数标识等待可读性检查的套接口。如果该套接口正处于监听listen()状态,则若有连接请求到达,该套接口便被标识为可读,这样一个accept()调用保证可以无阻塞完成。对其他套接口而言,可读性意味着有排队数据供读取。或者对于SOCK_STREAM类型套接口来说,相对于该套接口的虚套接口已关闭,于是recv()或recvfrom()操作均能无阻塞完成。
     wlist参数标识等待可写性检查的套接口。如果一个套接口正在connect()连接(非阻塞),可写性意味着连接顺利建立。如果套接口并未处于connect()调用中,可写性意味着send()和sendto()调用将无阻塞完成。
     xlist参数标识等待带外数据存在性或意味错误条件检查的套接口。请注意如果设置了SO_OOBINLINE选项为假FALSE,则只能用这种方法来检查带外数据的存在与否。对于SO_STREAM类型套接口,远端造成的连接中止和KEEPALIVE错误都将被作为意味出错。
       空序列也是允许的,但是能不能3个参数都为空就要由你的系统决定了。(众所都知unix下是行得,windows下不行)timeout指定了一个秒级的浮点型参数表示超时时间当timeout参数为空的时候省略了函数会阻塞直到至少有一个文件描述符已经准备好了。
      返回值是三个已经准备好的列表,也是3个参数对象的子集。如果超时了,返回的是三个空列表。其中列表中可以接收的参数类型是Python中的文件参数(例如sys.stdin或者是open()、sys.popen()的返回对象),或者是 socket.socket的返回对象。你也可以自己封装成一个类,只要适合fileno()方法。
      注意:在windows中文件对象是无法接受的,但是socket是可以使用的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值