zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    js 保留两位小数 input要求是数字框,
    ionic实现滑动的三种方式
    如何在只封装异步请求的两个接口中实现同步请求
    ng-trim
    ng-repeat
    angular.js开发 将多页面开发成单页面
    接口
    记忆
    心情
    最小化安装CentOS-7-x86_64-Minimal-1511图文教程
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6731072.html
Copyright © 2011-2022 走看看