15.队列Queue的特点以及使用,优先级等
#生产者与消费者模式,模式解释:比如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())
15.队列Queue的特点以及使用,优先级等的更多相关文章
- 队列Queue、栈LifoQueue、优先级队列PriorityQueue
队列:队列是先进先出. import queue q = queue.Queue() q.put(1) q.put(2) q.put(3) q.put(4) print(q.get()) print( ...
- Java中的队列Queue,优先级队列PriorityQueue
队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...
- 映射Map、队列Queue、优先级队列PriorityQueue
映射Map 将对象映射到其他对象的能力是解决编程问题的有效方法.例如,考虑一个程序,它被用来检查 Java 的 Random 类的随机性.理想情况下, Random 会产生完美的数字分布,但为了测试这 ...
- STL学习笔记6 -- 栈stack 、队列queue 和优先级priority_queue 三者比较
栈stack .队列queue 和优先级priority_queue 三者比较 默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现 ...
- python笔记9 线程进程 threading多线程模块 GIL锁 multiprocessing多进程模块 同步锁Lock 队列queue IO模型
线程与进程 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及如何完成:数据集则是程序在执行过程中所需要 ...
- [ACM训练] 算法初级 之 数据结构 之 栈stack+队列queue (基础+进阶+POJ 1338+2442+1442)
再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个 ...
- Python进阶【第二篇】多线程、消息队列queue
1.Python多线程.多进程 目的提高并发 1.一个应用程序,可以有多进程和多线程 2.默认:单进程,单线程 3.单进程,多线程 IO操作,不占用CPU python的多线程:IO操作,多线程提供并 ...
- java09 队列Queue与Deque
队列Queue与Deque. Enumeration Hashtable与Hashtable子类Properties(资源配置文件) 引用类型(强.软.弱.虚)与WeakHashMap Identit ...
- 消息队列Queue大全
消息队列Queue大全 (http://queues.io/) 作业队列,消息队列和其他队列.几乎所有你能想到的都在这. 关于 那里有很多排队系统.他们每个人都不同,是为解决某些问题而创建的.这个页面 ...
随机推荐
- Java8 HashMap详解(转)
Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成. 根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们 ...
- Python中map和reduce函数??
①从参数方面来讲: map()函数: map()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组).其中,函数(即map的第一个参数位置的函数)可以接收一个或多个参数. reduce() ...
- python的继承、重载和重写???
继承语法:<1>单继承:class(父类名)<2>多继承class(父类1,父类2,父类n...) 继承的特点:<1>减少代码量和灵活指定型类<2>子类 ...
- RMAN备份与恢复 —— 完全恢复与不完全恢复
名词解释: 顾名思义,完全恢复就是指数据没有丢失的恢复了.不完全恢复是指恢复后有部分数据丢失.它们是数据库的两种恢复方式. 完全恢复:利用重做日志或增量备份将数据块恢复到最接近当前时间的 ...
- Dubbo一文入门
一.简介 系统的架构,已从最早的单体式架构(一个war包完事)逐渐发展到目前的微服务式架构.微服务,将一个大型的复杂的应用系统,拆分成若干独立的松耦合的小的服务工程,每个服务工程可独立部署,每个服务只 ...
- 2018-09-25-weekly
Algorithm 两数相加 What 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. How 两个链表长度相同的部分,对位相加, ...
- CSS--使用CSS Grid(网格)布局
.一 CSS Grid(网格布局)简介 CSS Grid 布局由两个核心组成部分是父元素和子元素,父元素 是实际的 grid(网格),子元素是 grid(网格) 内的内容.下面是一个父元素和六个子元素 ...
- vue-cli 2.0搭建vue脚手架步骤
1.安装node 检测版本node -v 2.安装webpack npm install webpack -g 检测版本 webpack -v 3.安装vue-cli npm install vue- ...
- man LVCREATE
LVCREATE(8) LVCREATE(8) NAME/名称 lvcreat ...
- Linux学习-MySQL的主从复制高可用性解决方案MHA
一.MHA简介 1.MHA Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点:通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现, ...