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
    
  • 相关阅读:
    体验ASP.NET 2.0中的BuildProvider(转载)
    为什么要用非关系数据库?
    Inside ASP.NET 2.0即时编译系统(转载)
    文本信息检索(维基百科)
    通用数据压缩算法简介
    在HttpModule中使用gzip,deflate协议对aspx页面进行压缩
    NoSQL非关系型数据库
    fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1786)
    C++中的变量 Variables in C++
    Visual C++, pow(),error C2065: 'pow' : undeclared identifier
  • 原文地址:https://www.cnblogs.com/momo8238/p/7352062.html
Copyright © 2011-2022 走看看