zoukankan      html  css  js  c++  java
  • queue

    queue模块


    Queue 就是对队列,它是线程安全的。线程之间不会有征用的问题

    import queue

    q = queue.Queue(maxsize=0) # 构造一个先进显出队列,maxsize指定队列长度,为0 时,表示队列长度无限制。q.join() # 等到队列为kong的时候,在执行别的操作

    q.qsize() # 返回队列的大小 (不可靠是因为在你获取的那个时间点上是OK的,但是同时可能有往队列中扔消息或者取消息)
    q.empty() # 当队列为空的时候,返回True 否则返回False (不可靠)
    q.full() # 当队列满的时候,返回True,否则返回False (不可靠)
    q.put(item, block=True, timeout=None) # 将item放入Queue尾部,item必须存在,可以参数block默认为True,表示当队列满时,此时会阻塞,为False时为非阻塞,此时如果队列已满,会引发queue.Full 异常。 可选参数timeout,表示 会阻塞设置的时间,过后,如果队列无法给出放入item的位置,则引发 queue.Full 异常
                            
    q.get(block=True, timeout=None) # 移除并返回队列头部的一个值,可选参数block默认为True,表示获取值的时候,如果队列为空,则阻塞,为False时,不阻塞,若此时队列为空,则引发 queue.Empty异常。 可选参数timeout,表示会阻塞设置的时候,过后,如果队列为空,则引发Empty异常。


    q.put_nowait(item) # 等效于 put(item,block=False) 即使队列满了也不会阻塞
    q.get_nowait() # 等效于 get(item,block=False) 即使队列为空获取的时候也不会阻塞

     1 #!/usr/bin/env python
     2 import Queue
     3 import threading
     4 
     5 
     6 message = Queue.Queue(10)
     7 
     8 
     9 def producer(i):
    10     while True:
    11         message.put(i)
    12 
    13 
    14 def consumer(i):
    15     while True:
    16         msg = message.get()
    17 
    18 
    19 for i in range(12):
    20     t = threading.Thread(target=producer, args=(i,))
    21     t.start()
    22 
    23 for i in range(10):
    24     t = threading.Thread(target=consumer, args=(i,))
    25     t.start()
    queue
  • 相关阅读:
    非foreach情况下取某一节点的position()
    MorningSale 介绍
    XSLT中的内容自动换列
    十年相伴一首歌
    Navicat的强大自动定时备份
    Xshell6评估期已过的解决方法
    Ext JS继承: 关于object, constructor和prototype
    WCF+Silverlight 异常处理
    Adding/removing fields and columns drag & drop bug's fix
    WCF部署至IIS问题二则
  • 原文地址:https://www.cnblogs.com/menkeyi/p/7115616.html
Copyright © 2011-2022 走看看