zoukankan      html  css  js  c++  java
  • [py]py2自带Queue模块实现了3类队列

    py2自带Queue实现了3类队列

    先搞清楚几个单词

    Queue模块实现了三类队列:

    • FIFO(First In First Out,先进先出,默认为该队列), 我们平时泛指的队列,

    • LIFO(Last In First Out,后进先出)

    • 基于优先级的队列。以下为其常用方法:

    队列一般有 push pop size empty等

    先进先出  q = Queue.Queue(maxsize)
    后进先出  a = Queue.LifoQueue(maxsize)
    优先级  Queue.PriorityQueue(maxsize)
    
    Queue.qsize() 返回队列的大小
    Queue.empty() 如果队列为空,返回True,反之False
    Queue.full() 如果队列满了,返回True,反之False
    Queue.full 与 maxsize 大小对应
    Queue.put(item) 写入队列,timeout等待时间   非阻塞
    Queue.get([block[, timeout]]) 获取队列,timeout等待时间
    Queue.get_nowait() 相当Queue.get(False)
    Queue.put_nowait(item) 相当Queue.put(item, False)
    Queue.task_done() 在完成一项工作之后,函数向任务已经完成的队列发送一个信号
    Queue.join(): 实际上意味着等到队列为空,再执行别的操作 
    

    python Queue模块

    FIFO(先进先出)

    import Queue
    q = Queue.Queue()
    for i in range(5):
        q.put(i)
    while not q.empty():
        print q.get()
    

    LIFO(后进先出)

    import Queue
    q = Queue.LifoQueue()
    for i in range(5):
        q.put(i)
    while not q.empty():
        print q.get()
    

    带优先级的队列

    import Queue
    class Job(object):
        def __init__(self, priority, description):
            self.priority = priority
            self.description = description
            print 'New job:', description
            return
        def __cmp__(self, other):
            return cmp(self.priority, other.priority)
    q = Queue.PriorityQueue()
    q.put( Job(3, 'Mid-level job') )
    q.put( Job(10, 'Low-level job') )
    q.put( Job(1, 'Important job') )
    while not q.empty():
        next_job = q.get()
        print 'Processing job:', next_job.description
    
  • 相关阅读:
    How to add a button in the seletions "More"
    Tags Used In OpenERP 7.0
    OpenERP Web Client设置闲置有效时间
    OpenERP7.0中非admin帐号新增其它用户问题
    Docker 使用docker-compose部署项目
    Docker 安装docker-compose多容器管理服务
    Jenkins集成Docker实现镜像构建和线上发布
    Centos下安装JDK、Maven和Git
    服务注册发现与调度
    Spring boot centos部署启动停止脚本
  • 原文地址:https://www.cnblogs.com/iiiiiher/p/8316112.html
Copyright © 2011-2022 走看看