• Python3-queue模块-同步队列


    Python3中的queue模块实现多生产者,多消费者队列,特别适用于多个线程间的信息的安全交换,主要有三个类

      queue.Queue(maxsize=0)

        构造一个FIFO(先进先出)的队列

      queue.LifoQueue(maxsize=0)

        构造一个LIFO(后进先出)的队列

      queue.PriorityQueue(maxsize=0)

        构造一个具有优先级的队列,存储的是一个元组(n, value),n为数字代表优先级,数字越小,级别越高

    这个模块定义了两个异常

      queue.Empty

        如果队列中为空,继续调用非阻塞的get_nowait()会抛出异常

      queue.Full

        如果队列已满,继续调用非阻塞的put_nowait()会抛出异常

    import queue
    # 以下三个队列都可以设置最大长度maxsize,默认是无限大
    print("-------------queue.Queue----------------")
    # 线程消息队列,FIFO(先进先出)
    q = queue.Queue()
    q.put("one")
    q.put("two")
    q.put("three")
    print(q.get())
    print(q.get())
    print(q.get())
    # print(q.get(timeout=3))     # 队列中没有数据,会阻塞
    
    print("-------------queue.LifoQueue----------------")
    # 线程消息队列,LIFO(后进先出)
    lq = queue.LifoQueue()
    lq.put("one")
    lq.put("two")
    lq.put("three")
    print(lq.get())
    print(lq.get())
    print(lq.get())
    
    print("-------------queue.PriorityQueue----------------")
    # 线程消息队列,PriorityQueue(优先级的队列:数字越小优先级越高)
    pq = queue.PriorityQueue()
    pq.put((1, "Jet"))
    pq.put((3, "Jack"))
    pq.put((2, "Judy"))
    print(pq.get())
    print(pq.get())
    print(pq.get())
    View Code

    参考资料

      http://python.usyiyi.cn/translate/python_352/library/queue.html

      

  • 相关阅读:
    希尔排序(六)
    快速排序(五)
    oracle中的minus数据比对
    oracle中过滤中文字符或者汉字的函数
    java中已经排序的列表中插入新值
    java中双向链表的增、删、查操作
    oracle中建同名
    oracle中创建dblink
    oracle中把函数的执行权限赋个某个用户
    oracle中导出表的结构和数据
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6731072.html
Copyright © 2020-2023  润新知