Queue FIFO 先进先出
LifoQuere 先进后出(栈)
PriorityQueue 优先队列(通过自定义算法实现)
import time
import queue
import threading
import random
def product(query_info):
for i in range(5000):
time.sleep(0.5)
item = random.randint(0, 100)
query_info.put(item)
print(f'在队列中放入数据项:{item}')
def consumter(query_info):
while True:
try:
item = query_info.get(timeout=3)
print(f'在队列中移除数据项:{item}')
except queue.Empty:
break
else:
query_info.task_done() # task_done()声明当前队列处理完毕
def main():
q = queue.Queue() #maxsize=4
threads = []
p = threading.Thread(target=product, args=(q, ))
p.start()
for i in range(2):
t = threading.Thread(target=consumter, args=(q, ))
t.start()
t.join()
q.join() # 队列所有项处理完毕前阻塞
main()