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

  • 相关阅读:
    mysql服务的注册,启动、停止、注销。 [delphi代码实现]
    java初始化
    git的使用
    jmeter测试
    Linux上安装Redis
    java多线程
    设计模式之装饰着模式
    IO流之字符流知识总结
    IO流之字节流知识总结
    java File类
  • 原文地址:https://www.cnblogs.com/testing-BH/p/9296389.html
Copyright © 2011-2022 走看看