博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
queue
阅读量:4984 次
发布时间:2019-06-12

本文共 1299 字,大约阅读时间需要 4 分钟。

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

 

转载于:https://www.cnblogs.com/menkeyi/p/7115616.html

你可能感兴趣的文章
每日记载内容总结3
查看>>
ajax等待请求
查看>>
NTP协议详解
查看>>
Java学习之equals和hashcode的关系
查看>>
问题-delphi XE2 Stack Overflow- save your work and restart CodeGear
查看>>
一页纸商业计划书 (Business Plan) 模板(转载)
查看>>
什么是html
查看>>
妙用python之编码转换
查看>>
hdu 4451 Dressing 衣服裤子鞋 简单容斥
查看>>
TTTTTTTTTTTT Gym 100818B Tree of Almost Clean Money 树连剖分+BIT 模板题
查看>>
linux一些基本常识(四)
查看>>
Docker架构
查看>>
C#设计模式(3)——工厂方法模式
查看>>
过目不忘JS正则表达式
查看>>
hdu4009最小树形图
查看>>
bzoj1009: [HNOI2008]GT考试 ac自动机+矩阵快速幂
查看>>
UVA 784 Maze Exploration
查看>>
UVA 10905 Children's Game
查看>>
ZOJ 2676 Network Wars
查看>>
网站字体的导入代码
查看>>