当前位置:   article > 正文

Python多线程(3)——Queue模块_下列选项中,与get_nowait()方法等价的是

下列选项中,与get_nowait()方法等价的是

 Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes)。

  Python 2 中的Queue模块在Python 3中更名为 queue。

 

Queue对象的创建

  可以通过实例化Queue类型获得队列对象:

1
=  Queue.Queue(maxsize = 0 )

  创建新的队列,参数 maxsize 的含义是:

  • 如果 maxsize > 0:当 q 中的元素达到 maxsize 个时,队列就满了,此时再有一个线程希望向里面插入时,如果指定了 block 选项,就会阻塞直到一个线程从里面抽出一个元素。
  • 如果 maxsize <= 0:Python会认为这是一个没有容量限制的队列。

 

Queue模块定义的异常类

1
Queue.Empty

  如果队列 q 是空的,此时又调用了 q.get(False),就会抛出该异常。

 

1
Queue.Full

  如果队列q是满的,而又调用了 q.put(x, False),就会抛出该异常。

 

Queue对象的方法

q.empty()

   判断队列是否为空。

 

q.full()

   判断队列是否已满。

 

q.get(block=True, timeout=None)
q.get_nowait()

  参数 block 为 False 时,参数 timeout 没有意义,因为线程不会阻塞:

  • 如果队列不为空,取走并返回该元素;
  • 如果队列为空,抛出Queue.Empty

  block 为 True 时,结合超时 timeout 判断当队列空时,是一直阻塞进程,还是进程阻塞一段时间。

  get_nowait()等于get(False),或者get(timeout=0)即不论队列空否,都不阻塞等待。

例如:

1
2
3
4
try :
     =  q.get_nowait()
except  Queue.Empty:
     print  "no more items to process"

  

q.put(item, block=True, timeout=None)
q.put_nowait(item)

  向队列中插入 item,如果队列满了,抛出Queue.Full或线程阻塞等待。

 

q.qsize()

  返回当前队列中的元素个数。

 

q.join()

 

q.task_done()
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/143456
推荐阅读
相关标签
  

闽ICP备14008679号