队列
来源:互联网 发布:Windows 10 无线网络 编辑:程序博客网 时间:2024/06/06 00:43
先进先出,会进会出,进了不出就存储,出了则不再队列范围内
import queueq = queue.Queue()
基本方法如下
1. 设置队列长度
q = queue.Queue(maxsize=length)
2. 压入数据
q.put()
3. 获取数据
q.get()
q.empty()
5. 判断队列是否满了
q.full()
6. 合并队列
q.join(otherQueue)
q.qsize()
前面的是普通的队列,一般数据都是按照先进先出的顺序进行的
但是还有一种栈队列,它实现的是后进先出
import queueq = queue.LifoQueue()
一般方法和一般队列一样,但是顺序按照后进先出的顺序进行
还有一种队列是优先级队列,可以自定义比较方式,然后按照优先级进行返回
import queueq = queue.PriorityQueue(maxsize=3)q.put('c')q.put('b')print(q.get()) #b
默认用ascii码进行比较,不论压入顺序,值通过比较优先级进行返回
不过也可以编写一个比较类,自定义优先级
import queueclass Comp(object): def __init__(self,prop,value): self.prop = prop self.value = value def __lt__(self, other): return self.prop - other.prop def __str__(self): return 'prop:{}\tvalue:{}'.format(self.prop,self.value) a = queue.PriorityQueue(maxsize=3)a.put(Comp(1,'a'))a.put(Comp(2,'c'))a.put(Comp(3,'b'))while not a.empty(): print(a.get())
结果
prop:3value:bprop:2value:cprop:1value:a
可以看到,队列顺序完全按照优先级进行排序,先输出优先级高的对象
python3中没有cmp函数,类中替代的方法为
__lt__(a, b) # a < b__le__(a,b) # a <= b__eq__(a,b) # a == b__ne__(a,b) # a != b__gt__(a,b) # a > b__ge__(a, b) # a>= b
技巧:队列并不算是一种存储手段,它更像是一种调度手段,用来安排事件发生执行顺序
所以通常用来调度方法执行,和线程作用
阅读全文
0 0
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- c++ 格雷码的生成
- 17ICPC南宁网络赛 A 概率论+阅读理解
- 无穷大数 INF
- 框架漫谈之spring(一)工厂模式实现程序解耦,spring框架的引出
- Oracle expdp impdp导出导入命令及数据库备份
- 队列
- 共轭梯度法
- 有功功率、无功功率、视在功率、功率因数及峰值因子
- php的魔术变量__METHOD__、__FUNCTION、__DIR__、__f
- VMware Tools 安装方法
- mysql索引设计
- Redis的过期键删除策略
- 328. Odd Even Linked List
- 设计模式之单例模式