所以,想象一下,我只有一个套接字需要在IO活动时进行IO管理。使用select.select()我会做
import socket
import select
a = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
a.setblocking(True)
connected = True
while connected:
read, write, error = select.select([a], [a], [a])
if read:
#do stuff with data
if write:
#write to socket
是否没有更好的解决方案来检查是否只有一个套接字是可读/可写的?我将只处理单个套接字对象,而不是更多。我觉得这个方法是在管理多个套接字的基础上构建的,因为可能有一种更有效的方法来处理只有一个套接字。
答案 0 :(得分:0)
select()仍然是可行的方法,即使对于单个套接字也是如此。唯一的替代方案(忽略了类似于poll()的讨论替代方法,类似于select())将阻塞I / O,但如果你在recv()中被阻止,则无法在被唤醒时被唤醒套接字变为准备写入,反之亦然,如果你在send()中被阻止。
所以你不妨使用select()。将它用于单个插槽没有任何低效率。