python3 的queue 的参数,block、timeout
queue队列默认block=True;
这会使得,在进行队列操作时,出现队列为空,或满了,程序会进入阻塞状态,等待超时。
import queue
from time import sleep
q = queue.Queue(10)
for i in range(20):
print(i)
q.put(i, timeout=5) # 在队列塞满了以后,在阻塞了timeout时间后raise一个queue.full的异常
sleep(0.2)
while q.get():
print(q.get())
程序结果为:
Traceback (most recent call last):
File "D:/Python/new/queue_test.py", line 8, in <module>
q.put(i, timeout=5) # 在队列塞满了以后,在阻塞了timeout时间后raise一个queue.full的异常
File "C:\Program Files\Python35\lib\queue.py", line 141, in put
raise Full
queue.Full
如果没有block 或 timeout 的定义,那么会一直在阻塞状态,不会抛出异常或者进行其他的下一步。一直在阻塞状态。
以上。