queue模块中的get()方法有一个可选参数timeout。默认状态下timeout=None,即当队列中没有数据时,程序将处于阻塞等待状态,直到队列中又有数据为止。如果一直没有新的数据加入队列,则程序将出现卡死现象。
下面展示一些 内联代码片。

import queue

q = queue.Queue(5)

for i in range(5):
#将0-4加入队列中
q.put(i)

for i in range(6):
#在队列中去数据,取了6次,则最后一次将无值可取。
print(q.get())

如果给timeout赋值,且赋值时间结束后队列queue仍为空,则会抛出Empty异常。 我们可以使用try—-except 代码块来将程序优雅的退出。
下面展示一些 内联代码片。

import queue

q = queue.Queue(5)

for i in range(5):
#将0-4加入队列中
q.put(i)

for i in range(6):
#使用异常处理
py

try:
    print(q.get(timeout=5)) #等待5秒,如果还是不能取到数据,则抛出异常。
except:
    break

来源:红尘客——