繁体   English   中英

为什么select()总是在非阻塞模式下被阻止

[英]Why's select() always blocked in non-blocking mode

虽然我在非阻塞中设置套接字,但仍然阻塞了seclect()函数。 请帮我。

这是我的代码:

import socket
import select
if __name__ == '__main__':
   server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
   server.bind(("localhost",9006))
   server.listen(10)
   server.setblocking(False)
   inputs = [server]
   while True:
      try:
         a,b,c = select.select(inputs, [], [])
      except Exception:
        print ("exception")
      print ("Timeout") 

选择的文档

可选的timeout参数指定超时为浮点数(以秒为单位)。 省略timeout参数时,函数将阻塞,直到至少有一个文件描述符准备就绪。

换句话说,套接字“阻塞”状态在这里不相关。 您需要指定任何超时以禁用阻止; 当没有任何东西要读时,你可以设置0使其立即返回(但请注意,你的循环会占用大量CPU)。

例如:

a,b,c = select.select(inputs, [], [], 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM