queue队列简单操作

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()
发布了192 篇原创文章 · 获赞 34 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/a6864657/article/details/103900362