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
    
  • 相关阅读:
    服务器选型:x86 vs 小型机谁更胜一筹?
    MySQL与PostgreSQL相比哪个更好?
    微服务架构优缺点
    聊聊Flume和Logstash的那些事儿
    HDFS文件系统
    阿里巴巴鹰眼技术解密
    OLAP、OLTP的介绍和比较
    storm架构及原理
    swift ClassNameFromString 的替换方法 + 创建TableviewHelper
    swift 屏幕的翻转 + 状态栏(statusBar)的隐藏
  • 原文地址:https://www.cnblogs.com/iiiiiher/p/8316112.html
Copyright © 2011-2022 走看看