这是我在循环中使用的一段代码:
while True:
print 'loop'
rlist, wlist, xlist = select.select(readers, [], [], TIMEOUT)
print 'selected'
# do stuff
在某一时刻,选择将阻止,并且“选中”永远不会被打印。什么可以导致这种行为?是否有可能出现某种僵局?
UPDATE :我在Ubuntu linux上运行,读者对象是套接字。
答案 0 :(得分:2)
是的,根据所讨论的操作系统,某个文件描述符确实可能以不可中断的方式在操作系统级别阻止,即使您明确要求它是非阻塞的。根据您的操作系统,这些操作系统级别的错误(或“错误”)可能会有解决方法,但是为了提供任何进一步的帮助,我们需要准确了解操作系统的操作以及{{1中的确切类型的对象列表。
答案 1 :(得分:1)
一些远见......
如果TIMEOUT设置为None,则select将永不超时。 此外,如果读者变为空列表,则select将始终等待完整超时值(如果TIMEOUT为None,则挂起)