15.队列Queue的特点以及使用,优先级等
2024-10-21 02:45:04
#生产者与消费者模式,模式解释:比如MVC设计模式
'''
1.队列
(1)特点:先进先出
(2)python2 VS python3
python2:from Queue import queue
python3:from queue import Queue join--阻塞动作
blocked--状态 (3)使用
Python的Queue模块中提供了同步的,线程安全的队列类
a.FIFO----(First In First Out)先进先出
b.LIFO----(Last In First Out)后进先出
中间的时候,给自己贴一个标签,给自己设置一个优先级
c.priority----优先级队列 这些队列都实现了锁原语(可以理解为原子操作,即要么不做,要么做完),能够在多线程中直接使用
可以使用队列来实现线程间的同步问题
'''
from queue import Queue
#可以生成优先级队列
import queue
#这样不安全 可能会对其进行更改
# download__list = [11,22,33] q = Queue(3) #默认先进先出队列
#判断队列是否为空
# print(q.empty()) #往队列中放数据
q.put('d1')
q.put('d2')
q.put('d3')
# print(q.qsize())
#判断是否空和满
# print(q.empty(),q.full()) #取数据
# print(q.get())
# print(q.get())
# print(q.get())
# print(q.get(timeout=2))#阻塞,超时之后抛出queue.Empty异常,没有数据强制取
# print(q.get_nowait())#不要等待,没有数据抛出queue.Empty异常 #b.规定队列长度
# q1 = Queue(maxsize=4)#最大任务数为4
# q1.put(1)
# q1.put(2)
# q1.put(3)
# q1.put(4)
# q1.put(5)
# q1.put(5,timeout=2)#阻塞,如果队列已满,抛queue.Full异常
# q1.put(5,block=False)#抛queue.Full异常 # print(q1.qsize())#获取队列当中的任务数量大小
# print('~~~~~~~~~~~~~') #c.队列优先级,数字小的优先级高
q2 = queue.PriorityQueue()
q2.put((1,'d1'))
q2.put((2,'d2'))
q2.put((-1,'d3'))
q2.put((0,'d4'))
# print(q2.get())
# print(q2.get())
# print(q2.get())
# print(q2.get()) #取里面的数据
# i = 0
# while i < q2.qsize():
# print(q2.get()) #后进先出队列
q3 = queue.LifoQueue()
q3.put(1)
q3.put(2)
q3.put(3) i = 0
while i < q3.qsize():
print(q3.get())
最新文章
- Cordova Ionic AngularJS
- Spark大数据的学习历程
- C++实现对lua访问的封装
- 玩转数据库之 Group by Grouping
- 【OpenStack】OpenStack系列7之Nova详解
- appcon 图标打包
- (转)codeblock(常用快键)
- Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口
- bzoj 3931 [CQOI2015]网络吞吐量(最短路,最大流)
- UFLDL教程(五)之self-taught learning
- 在javascript中使用媒体查询media query
- 转:嵌入式linux启动时运行的inittab文件
- TypeScript 素描 - 模块解析、声明合并
- MFC解决Static控件背景透明时文本覆盖重影
- [译]Java 设计模式之适配器
- Android Tips
- bzoj 4002: [JLOI2015]有意义的字符串
- 损失函数 hinge loss vs softmax loss
- C# - 设计模式 - 钩子模式
- 关于mpvue 切换页面数据没清空