一、FIFO队列(先进先出)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'zhoufeng'

#FIFO队列
import queue
q=queue.Queue(3)  #定义一个3位置的队列

#使用put方法往队列中添加元素,需要考虑是否能放下的问题
#如果放不下了,默认会阻塞(block=True),阻塞时可以定义超时时间(timeout=5)
#可以使用block=False设置不阻塞立即报错
q.put(11)
q.put(22)
q.put(33)
print(q.empty())  #判断队列是否为空,如果为空返回False,不为空返回True
print(q.qsize())  #输出队列中元素个数
q.put(44,block=True,timeout=5)

#使用get方法从队列中取数据,需要考虑是否有数据可取的问题
#如果无数据可取,默认会阻塞(block=True),阻塞时可以定义超时时间(timeout=2)
#可以使用block=False设置不阻塞立即报错
print(q.get())
print(q.get())
print(q.get())
print(q.get(block=True,timeout=2))

#另外还有join与task_done方法,这两个方法是成对使用的
#join方法用于阻塞进程不继续往下执行,当队列中任务执行完后,不再阻塞
#解释器怎样知道队列中任务执行完了呢?通过task_done方法显式告诉解释器某个任务已经执行完毕
que=queue.Queue(3)  #定义一个3位置的队列对象
que.put(11)
que.put(22)
que.put(33)

que.get()
que.task_done()  #告诉解释器上一个任务已经执行完毕
que.get()
que.task_done()  #告诉解释器上一个任务已经执行完毕

que.join()

二、栈(后进先出)

使用queue.LifoQueue()生成栈

三、优先级队列

使用queue.PriorityQueue()生成优先级队列

四、双向队列

使用queue.deque()生成双向队列

python---常见的数据队列的更多相关文章

  1. python常见的数据转化函数

    python常用类型转换函数 函数格式 使用示例 描述 int(x [,base]) int("8")   可以转换的包括String类型和其他数字类型,但是会丢失精度       ...

  2. Python 解析构建数据大杂烩 -- csv、xml、json、excel

    Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据 ...

  3. Python/ selectors模块及队列

    Python/selectors模块及队列 selectors模块是可以实现IO多路复用机制: 它具有根据平台选出最佳的IO多路机制,比如在win的系统上他默认的是select模式而在linux上它默 ...

  4. python常见排序算法解析

    python——常见排序算法解析   算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...

  5. Python 常见文件操作的函数示例(转)

    转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...

  6. python多线程编程(6): 队列同步

    原文请看:http://www.cnblogs.com/holbrook/archive/2012/03/15/2398060.html 前面介绍了互斥锁和条件变量解决线程间的同步问题,并使用条件变量 ...

  7. Python常见文件操作的函数示例

    # -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...

  8. 一文了解Python常见的序列化操作

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  9. 易百教程人工智能python修正-人工智能数据准备-预处理数据

    预处理数据 在我们的日常生活中,需要处理大量数据,但这些数据是原始数据. 为了提供数据作为机器学习算法的输入,需要将其转换为有意义的数据. 这就是数据预处理进入图像的地方. 换言之,可以说在将数据提供 ...

  10. Python: sklearn库——数据预处理

    Python: sklearn库 —— 数据预处理 数据集转换之预处理数据:      将输入的数据转化成机器学习算法可以使用的数据.包含特征提取和标准化.      原因:数据集的标准化(服从均值为 ...

随机推荐

  1. linux 添加静态ip dns

    /etc/network 下:interfaces auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.16 ...

  2. Mac下Virtual Box Host-Only网络配置

    Mac下的虚拟机其实有很多,Parallels.VMware Fusion.Virtual Box都不错,Parallels是目前试过感觉最好的,Fusion装64位系统驱动支持似乎不完善,而且混合模 ...

  3. EMC起步:华为交换机拆解

    [作者:byeyear    Email:east3@163.com    转载请保留此行] 1. 静电抗扰 理想情况下,我们的系统是一个中空且密闭的金属盒子,根据电磁场理论,外界的任何静电源都不可能 ...

  4. 微信开发之移动手机WEB页面(HTML5)Javascript实现一键拨号及短信发送功能

    在做一个微信的微网站中的一个便民服务电话功能的应用,用到移动web页面中列出的电话号码,点击需要实现调用通讯录,网页一键拨号的拨打电话功能. 如果需要在移动浏览器中实现拨打电话,发送email,美国服 ...

  5. Nginx去除版本号

    1.在配置文件中的 http节点中加入server_tokens off; 2.更改源码隐藏nginx软件的名称 1). 查看Nginx编译的参数/usr/local/nginx/sbin/nginx ...

  6. 如何用 .Net 开发

    1. 使用最新的技术() 2. 模块拆分,(保持单一,不要把所有的功能都在一起) 3.使用轻量级的外部框架 : :TinyMapper MVC6

  7. viewPager--viewpager时,发生内存溢出OOM问题

    两个问题:1.如果图片达到500kb每张,你这个划屏会有顿卡:2.快速滑动有出现0.几秒的白屏.图片越大,顿卡越明显. 回复parcool:500kb的背景算大的了,如果是想做图片墙,viewpage ...

  8. stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)

    I. 最小编辑距离的定义 最小编辑距离旨在定义两个字符串之间的相似度(word similarity).定义相似度可以用于拼写纠错,计算生物学上的序列比对,机器翻译,信息提取,语音识别等. 编辑距离就 ...

  9. java如何提取url里的域名

    使用java标准类库java.net.URL java.net.URL  url = new  java.net.URL("http://blog.csdn.net/zhujianlin19 ...

  10. EASYUI 表单(FORM)用法

    提交表单 $('#addform').form('submit', { url: '/Admin/AdminUser/AddAdminUser', onSubmit: function () { re ...