zoukankan      html  css  js  c++  java
  • queue队列

    1.作用:解耦,提高效率。队列就是一个容器,一个有顺序的容器。

    q.queue.Queue(maxsize=3): 生成一个队列的实例,并且最多存储3个元素

    q.get(item,block=Ture, timeout=None ): 从队列里取数据

    q.get( block=Ture, timeout=None) :  两个可选参数,默认取不到数据就阻塞

    q.get( block=False): 取不到数据不阻塞,而是抛出异常

    q.get( timeout=1):  卡1秒

    q.qsize( ): 查询队列中还剩多少元素。

    #先进先出
    import queue
    q=queue.Queue() #生成一个队列的实例
    q.put('d1')
    q.put('d2')
    q.put('d3')
    print(q.qsize())
    print(q.get())
    

     运行结果:

    3
    d1
    

    2. Lifo: last in first out, 后进先出

    import queue
    q=queue.LifoQueue()
    q.put(1)
    q.put(2)
    q.put(3)
    print(q.get())
    print(q.get())
    print(q.get())
    

     运行结果:

    3
    2
    1
    

    3. 存储数据是可设置优先级的队列 queue.PriorityQueue(maxsize=0)

    import queue
    q=queue.PriorityQueue()
    q.put((10,'Alex'))
    q.put((2,'Jack'))
    q.put((5,'Tom'))
    
    print(q.get())
    print(q.get())
    print(q.get())
    

     运行结果:

    (2, 'Jack')
    (5, 'Tom')
    (10, 'Alex')
    

    4. 生产者消费者模型

    import threading,time,queue
    q=queue.Queue(maxsize=10)
    
    def Producer(name):
        count=1
        while True:
            q.put("骨头%s" % count)
            print('骨头',count)
            count+=1
            time.sleep(0.1)
    
    def Consumer(name):
        while True:
            print('%s 吃到了 %s'%(name,q.get()))
            time.sleep(1)
    p=threading.Thread(target=Producer,args=('alex',))
    c1=threading.Thread(target=Consumer,args=('张三',))
    c2=threading.Thread(target=Consumer,args=('李四',))
    
    p.start()
    c1.start()
    c2.start()
    

     运行结果:

    骨头 1
    张三 吃到了 骨头1
    骨头 2
    李四 吃到了 骨头2
    骨头 3
    骨头 4
    骨头 5
    骨头 6
    骨头 7
    骨头 8
    骨头 9
    骨头 10
    骨头 11
    张三 吃到了 骨头3
    骨头 12
    李四 吃到了 骨头4
    骨头 13
    骨头 14
    骨头 15
    张三 吃到了 骨头5
    骨头 16
    李四 吃到了 骨头6
    骨头 17
    张三 吃到了 骨头7
    李四 吃到了 骨头8
    骨头 18
    骨头 19
    张三 吃到了 骨头9
    李四 吃到了 骨头10
    骨头 20
    张三 吃到了 骨头11
    骨头 21
    李四 吃到了 骨头12
    骨头 22
    张三 吃到了 骨头13
    骨头 23
    李四 吃到了 骨头14
    
  • 相关阅读:
    用 tableExcel导出EXCEL数据
    个人作业——软件评测
    结对第二次作业——某次疫情统计可视化的实现
    软工实践寒假作业(1/2)
    java注解和反射
    共享密钥
    鲁棒性验证-第五小组
    维数约减报告--第五小组
    网络1911、1912 D&S第1次作业--线性表批改总结
    网络1911、1912 C语言第4次作业--函数批改总结
  • 原文地址:https://www.cnblogs.com/momo8238/p/7352062.html
Copyright © 2011-2022 走看看