Python 队列阻塞 get()时没反应
作者:互联网
当队列为空时,执行get(),不会报异常
会进入阻塞状态,直到队列中有东西可取为止
from queue import Queue
taskQueue = Queue()
taskQueue.put('queue task 1')
print(f'队列长度:{taskQueue.qsize()}')
print(f'取值:{taskQueue.get()}')
print(f'队列长度:{taskQueue.qsize()}')
print(f'取值:{taskQueue.get()}') # 在这里阻塞
print('END')
block=False
未取得值时,不进入阻塞状态,抛出异常
from queue import Queue
try:
taskQueue = Queue()
taskQueue.put('queue task 1')
print(f'队列长度:{taskQueue.qsize()}')
print(f'取值:{taskQueue.get()}')
print(f'队列长度:{taskQueue.qsize()}')
print(f'取值:{taskQueue.get(block=False)}') # 在这里抛出异常
except:
pass
print('END')
timeout
超时未取得值时,抛出异常
import time
from queue import Queue
from threading import Thread
taskQueue = Queue()
# 5秒往队列中put一次
def queue_put():
for i in range(1, 101):
print('queue put')
taskQueue.put(f'queue task {i}')
time.sleep(5)
# timeout 超时时间内,未取得值,会抛出异常
def queue_get():
while 1:
print(f'取值:{taskQueue.get(timeout=3)}')
t1 = Thread(target=queue_put)
t1.start()
t2 = Thread(target=queue_get)
t2.start()
标签:Queue,taskQueue,Python,get,put,queue,队列,print 来源: https://www.cnblogs.com/jiyu-hlzy/p/15962736.html