zoukankan      html  css  js  c++  java
  • 15.队列Queue的特点以及使用,优先级等

    #生产者与消费者模式,模式解释:比如MVC设计模式
    '''
    1.队列
    (1)特点:先进先出
    (2)python2 VS python3
    python2:from Queue import queue
    python3:from queue import Queue
    
    join--阻塞动作
    blocked--状态
    
    (3)使用
    Python的Queue模块中提供了同步的,线程安全的队列类
    a.FIFO----(First In First Out)先进先出
    b.LIFO----(Last In First Out)后进先出
    中间的时候,给自己贴一个标签,给自己设置一个优先级
    c.priority----优先级队列
    
    这些队列都实现了锁原语(可以理解为原子操作,即要么不做,要么做完),能够在多线程中直接使用
    可以使用队列来实现线程间的同步问题
    '''
    from queue import Queue
    #可以生成优先级队列
    import queue
    #这样不安全 可能会对其进行更改
    # download__list = [11,22,33]
    
    q = Queue(3) #默认先进先出队列
    #判断队列是否为空
    # print(q.empty())
    
    #往队列中放数据
    q.put('d1')
    q.put('d2')
    q.put('d3')
    # print(q.qsize())
    #判断是否空和满
    # print(q.empty(),q.full())
    
    #取数据
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # print(q.get(timeout=2))#阻塞,超时之后抛出queue.Empty异常,没有数据强制取
    # print(q.get_nowait())#不要等待,没有数据抛出queue.Empty异常
    
    #b.规定队列长度
    # q1 = Queue(maxsize=4)#最大任务数为4
    # q1.put(1)
    # q1.put(2)
    # q1.put(3)
    # q1.put(4)
    # q1.put(5)
    # q1.put(5,timeout=2)#阻塞,如果队列已满,抛queue.Full异常
    # q1.put(5,block=False)#抛queue.Full异常
    
    # print(q1.qsize())#获取队列当中的任务数量大小
    # print('~~~~~~~~~~~~~')
    
    #c.队列优先级,数字小的优先级高
    q2 = queue.PriorityQueue()
    q2.put((1,'d1'))
    q2.put((2,'d2'))
    q2.put((-1,'d3'))
    q2.put((0,'d4'))
    # print(q2.get())
    # print(q2.get())
    # print(q2.get())
    # print(q2.get())
    
    #取里面的数据
    # i = 0
    # while i < q2.qsize():
    #     print(q2.get())
    
    #后进先出队列
    q3 = queue.LifoQueue()
    q3.put(1)
    q3.put(2)
    q3.put(3)
    
    i = 0
    while i < q3.qsize():
        print(q3.get())
  • 相关阅读:
    zabbix学习笔记----概念----2019.03.25
    用深信服AC控制方位话机注册链路的开、关
    方位话机冗余线路注册问题测试过程
    执行python文件报错SyntaxError: Non-ASCII character 'xe8' in file, but no encoding declared
    centos 7.4安装python3.7.4
    zabbix基础使用--添加ping监控
    snmp监控f5
    FortiGate 服务License注册步骤
    centos 7.4安装zabbix 3
    安装centos 6.7&7.4
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/8627594.html
Copyright © 2011-2022 走看看