zoukankan      html  css  js  c++  java
  • Queue模块初识

    Queue模块实现了多生产者、多消费者队列。它特别适用于信息必须在多个线程间安全地交换的多线程程序中。这个模块中的Queue类实现了所有必须的锁语义。它依赖于Python中线程支持的可用性;参见threading模块。

    模块实现了三类队列:FIFO(First In First Out,先进先出,默认为该队列)、LIFO(Last In First Out,后进先出)、基于优先级的队列。以下为其常用方法:

    先进先出  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模块介绍。

    1、FIFO(先进先出)

    import Queue
    q = Queue.Queue()
    for i in range(5):
        q.put(i)
    while not q.empty():
        print q.get()
    其输出结果如下:

    0
    1
    2
    3
    4

    2、LIFO(后进先出)

    import Queue
    q = Queue.LifoQueue()
    for i in range(5):
        q.put(i)
    while not q.empty():
        print q.get()
    执行结果如下:

    4
    3
    2
    1
    0

  • 相关阅读:
    原子核结构壳模型:粒子空穴转换
    第十二周学习总结
    构建之法读书笔记5
    5.21学习总结——android开发实现用户头像的上传
    5.20团队活动
    构建之法读书笔记4
    团队项目第一阶段验收
    HTML+CSS设计个人主页
    C++文件流
    面向对象程序设计_虚函数的应用
  • 原文地址:https://www.cnblogs.com/testing-BH/p/9296389.html
Copyright © 2011-2022 走看看