虽然我在非阻塞中设置套接字,但仍然阻塞了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")
Run Code Online (Sandbox Code Playgroud)
Mic*_*rny 14
从选择的文档:
可选的timeout参数指定超时为浮点数(以秒为单位).省略timeout参数时,函数将阻塞,直到至少有一个文件描述符准备就绪.
换句话说,套接字"阻塞"状态在这里不相关.您需要指定任何超时以禁用阻止; 您可以设置0
为在没有任何内容可读时立即返回(但请注意,您的循环会占用大量CPU).
例如:
a,b,c = select.select(inputs, [], [], 0)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5269 次 |
最近记录: |