我正在运行一个正在寻找套接字连接数据的线程。当它是空的时它就像我发现的那样坐在那里,但是当它是空的时我想通过它。我发现select模块应该可以做到,但现在它只是位于选择行。我在下面的一些研究中尝试了这个,但就像我说的那样,现在不是停在data = sock.recv,而是停在第一行。有任何想法吗?感谢。
while True:
readable, writable, exceptional = select.select([sock], [], [])
if readable:
data = sock.recv(1024)
else:
do something
答案 0 :(得分:1)
正如您在the documentation中读到的那样,select.select()
采用可选的第4个参数,取超时值。
如果超时没有sock
变为可读,则readable
为空。
您可以尝试类似
的内容while True:
readable, writable, exceptional = select.select([sock], [], [], 1.0)
if readable:
data = sock.recv(1024)
else:
print "nothing yet"