#生产者与消费者模式,模式解释:比如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的特点以及使用,优先级等的更多相关文章

  1. 队列Queue、栈LifoQueue、优先级队列PriorityQueue

    队列:队列是先进先出. import queue q = queue.Queue() q.put(1) q.put(2) q.put(3) q.put(4) print(q.get()) print( ...

  2. Java中的队列Queue,优先级队列PriorityQueue

    队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...

  3. 映射Map、队列Queue、优先级队列PriorityQueue

    映射Map 将对象映射到其他对象的能力是解决编程问题的有效方法.例如,考虑一个程序,它被用来检查 Java 的 Random 类的随机性.理想情况下, Random 会产生完美的数字分布,但为了测试这 ...

  4. STL学习笔记6 -- 栈stack 、队列queue 和优先级priority_queue 三者比较

    栈stack  .队列queue  和优先级priority_queue 三者比较 默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现 ...

  5. python笔记9 线程进程 threading多线程模块 GIL锁 multiprocessing多进程模块 同步锁Lock 队列queue IO模型

    线程与进程 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及如何完成:数据集则是程序在执行过程中所需要 ...

  6. [ACM训练] 算法初级 之 数据结构 之 栈stack+队列queue (基础+进阶+POJ 1338+2442+1442)

    再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个 ...

  7. Python进阶【第二篇】多线程、消息队列queue

    1.Python多线程.多进程 目的提高并发 1.一个应用程序,可以有多进程和多线程 2.默认:单进程,单线程 3.单进程,多线程 IO操作,不占用CPU python的多线程:IO操作,多线程提供并 ...

  8. java09 队列Queue与Deque

    队列Queue与Deque. Enumeration Hashtable与Hashtable子类Properties(资源配置文件) 引用类型(强.软.弱.虚)与WeakHashMap Identit ...

  9. 消息队列Queue大全

    消息队列Queue大全 (http://queues.io/) 作业队列,消息队列和其他队列.几乎所有你能想到的都在这. 关于 那里有很多排队系统.他们每个人都不同,是为解决某些问题而创建的.这个页面 ...

随机推荐

  1. 你所遵循的PEP8代码规范是什么?请举例说明其要求?

    1. 变量常量:大写加下划线 USER_CONSTANT.私有变量 : 小写和一个前导下划线 _private_value.Python 中不存在私有变量一说,若是遇到需要保护的变量,使用小写和一个前 ...

  2. html表格单元格添加斜下框线的方法

    一.分隔单元格的方法 1.用“transform: rotate(-55deg);”把一条水平线旋转一定角度就成斜线了 2.利用以下命令调整分割线位置等. :after :before transfo ...

  3. 05XML

    1.XML入门 1.1 引入 HTML, 超文本标记语言. html语言语法是很松散的! 1)标签不区分大小写的! 2)标签可以不匹配的. 由w3c组织,针对html的语法缺陷,去设计了另一门,叫xm ...

  4. rmdir 删除空目录

    1. 命令功能 rmdir:删除空目录,当目录不为空时,命令不能起作用. 2. 语法格式 rmdir  [option]  directory rmdir  选项  空目录 参数 参数说明 -p 递归 ...

  5. CSS3 结构性伪类选择器(2)

    CSS3 结构性伪类选择器—first-child “:first-child”选择器表示的是选择父元素的第一个子元素的元素E.简单点理解就是选择元素中的第一个子元素,记住是子元素,而不是后代元素. ...

  6. Oracle Internals Notes Redo Write Triggers

    There are four conditions that cause LGWR to perform a redo write. When LGWR is idle, it sleeps on a ...

  7. Oracle12c修改时区

    Oacle12c支持可插入数据库(PDB)在一个统一的数据库(CDB)中具有不同的字符集.时区文件版本和数据库时区. 出于性能原因,Oracle建议将数据库时区设置为UTC(0:00),因为不需要转换 ...

  8. Flask路由之重定向

    Flask框架提供了请求重定向功能,只需要使用 redirect_to即可, 示例代码如下: from flask import Flask, render_template, request, re ...

  9. c#类的定义,c#中的关健字,C#标识符

    什么是类:一种数数据结构,存储数据成员,方法成员,和其它的内容,便 于方便 谳用C#语法: class 类名{ //TODO} C#中关键字(小写)不能作为方法名,类名,命名空间名等, static ...

  10. Incorporating ASP.NET MVC and SQL Server Reporting Services, Part 2

    In the last issue, I introduced you to the basics of incorporating SQL Server Reporting Services int ...