我在全局globqueue
数组中存储了一堆队列。我现在想迭代所有这些队列并获取其中的所有项目。
但是我从队列中获取项目时遇到了一些问题。 我正在使用.get_nowait(),如果队列中没有任何内容,它将抛出“Empty”异常。我以为我能像这样抓住它:
for index, item in enumerate(globqueue):
print index, item
iterme = 1
while iterme:
try:
getiterme = item.get_nowait()
print getiterme
except ValueError:
iterme = 0
continue
但我仍然遇到此错误,其余代码将无法继续:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "server.py", line 213, in run
getiterme = item.get_nowait()
File "/usr/lib/python2.6/Queue.py", line 190, in get_nowait
return self.get(False)
File "/usr/lib/python2.6/Queue.py", line 165, in get
raise Empty
Empty
我知道我可以先用.qsize()
检查队列的大小,但我也读到这并不总是那么准确,所以请求原谅而不是许可,对吗?
答案 0 :(得分:4)
您正在抓住ValueError
,但通话会引发Queue.Empty
。尝试更改您的except处理程序以捕获Empty
异常。
try:
getiterme = item.get_nowait()
# etc...
except Queue.Empty:
# etc...