python select.select单插槽替代?

时间:2014-03-16 23:34:01

标签: python sockets

所以,想象一下,我只有一个套接字需要在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

是否没有更好的解决方案来检查是否只有一个套接字是可读/可写的?我将只处理单个套接字对象,而不是更多。我觉得这个方法是在管理多个套接字的基础上构建的,因为可能有一种更有效的方法来处理只有一个套接字。

1 个答案:

答案 0 :(得分:0)

select()仍然是可行的方法,即使对于单个套接字也是如此。唯一的替代方案(忽略了类似于poll()的讨论替代方法,类似于select())将阻塞I / O,但如果你在recv()中被阻止,则无法在被唤醒时被唤醒套接字变为准备写入,反之亦然,如果你在send()中被阻止。

所以你不妨使用select()。将它用于单个插槽没有任何低效率。