# 一共有以下3种队列
# 1、先进先出
# 2、后进先出
# 3、存储数据的时候可设置优先级的队列,设置不同的优先级,取的时候按照优先级的顺序来取 下面介绍一下队列的方法,如果要使用队列,则需要导入一个模块queue
import queue

q = queue.Queue(maxsize=3)
#创建一个队列的实例,该是对象的size是3 # q.get()
#从队列中获取值,如果队列中没有值,则会一直阻塞 # q.qsize()
#获取队列的size # q.get(timeout=3)
#c从队列中获取值,如果获取不到值,则只等待3s,如果超过3则会报错
# queue.Empty # q.get_nowait()的方法和q.get(timeout=3)一样的,如果拿不到会数据也会报一个queue.Empty的错
# queue.Empty #可以传一个list到队列中,取出来的也是一个list
q.put(["a","b","c"])
data = q.get_nowait()
print(data,type(data)) # ['a', 'b', 'c'] <class 'list'> #我们也可以把一个实例放在队列中
class foo(object):
def __init__(self,n):
self.n = n f = foo(2) q.put(f)
c = q.get_nowait()
print(c,type(c)) # <__main__.foo object at 0x01D03CB0> <class '__main__.foo'> #判断队列是否满,队列中有3个数据,如果get了一个,则队列中的数据个数就为2了
print(q.full())
# False
print(q.qsize())
q.put("1")
q.put({"k1":"v1"})
q.put(["a","b","c"])
print(q.qsize()) # q.put("2222")
#如果队列满了,则put会一直put不进去,这里就会一直阻塞 # q.put("abc",timeout=2)
#如果队列满了,加一个timeout=2.则会等待2s,如果还放不进去则会报错“queue.Full” # q.task_done()
# q.join() # q.empty()
# 判断队列是否为空 q = queue.Queue()
#上面这个是创建一个先进先出的队列 q = queue.LifoQueue()
#这里是创建一个先进后出的队列 q= queue.PriorityQueue()
#创建一个可以设置优先级的队列,存数据的时候是要用tuple的个数传数据,优先级越小,就越会被提前取出来 q.put((1,["a","b","c"]))
q.put((2,"abc")) print(q.get()) # (1, ['a', 'b', 'c'])

  

python之多线程队列的更多相关文章

  1. Python的多线程(threading)与多进程(multiprocessing )

    进程:程序的一次执行(程序载入内存,系统分配资源运行).每个进程有自己的内存空间,数据栈等,进程之间可以进行通讯,但是不能共享信息. 线程:所有的线程运行在同一个进程中,共享相同的运行环境.每个独立的 ...

  2. Python实现多线程调用GDAL执行正射校正

    python实现多线程参考http://www.runoob.com/python/python-multithreading.html #!/usr/bin/env python # coding: ...

  3. 【转】使用python进行多线程编程

    1. python对多线程的支持 1)虚拟机层面 Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,暂时无法利用多处理器的优势.使 ...

  4. [ Python - 11 ] 多线程及GIL全局锁

    1. GIL是什么? 首先需要明确的一点是GIL并不是python的特性, 它是在实现python解析器(Cpython)时所引入的一个概念. 而Cpython是大部分环境下默认的python执行环境 ...

  5. Python编程-多线程

    一.python并发编程之多线程 1.threading模块 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 1.1 开启线程的 ...

  6. PythonI/O进阶学习笔记_10.python的多线程

     content: 1. python的GIL 2. 多线程编程简单示例 3. 线程间的通信 4. 线程池 5. threadpool Future 源码分析   ================== ...

  7. python的多线程、多进程、协程用代码详解

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:刘早起早起 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  8. python之消息队列

    引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题.消息服务擅 ...

  9. Python GIL 多线程机制 (C source code)

    最近阅读<Python源码剖析>对进程线程的封装解释: GIL,Global Interpreter Lock,对于python的多线程机制非常重要,其如何实现的?代码中实现如下: 指向一 ...

随机推荐

  1. TOM带你玩充电 篇三:15款5号电池横评及选购建议——南孚金霸王小米宜家耐时品胜一个都逃不了

    双鹿电池的几个版本 理论上来说性价比:绿骑士>金骑士>黑骑士>蓝骑士 绿骑士和金骑士都很不错.哪个便宜买哪个. 小米性价比虽然最高,但是超市买不到. 蓝骑士是普通碳性电池,黑骑士是高 ...

  2. Hadoop(1.2.1)安装

    背景知识: 1.数据分布存储,不是复制存储 2.数据不动,代码动,由于分布式存储,所以把代码移动到数据的地方计算. 3.数据如何分割,hadoop提供的分割文件的编程接口 安装: 1.安装JDK 1. ...

  3. Linux Performance Analysis and Tools(Linux性能分析和工具)

    首先来看一张图: 上面这张神一样的图出自国外一个Lead Performance Engineer(Brendan Gregg)的一次分享,几乎涵盖了一个系统的方方面面,任何人,如果没有完善的计算系统 ...

  4. web.py尝试性学习!

    首先导入web.py模块! import web 没有的话就: pip install web web.py的URL结构: urls = ( '/', "index" ) 第一部分 ...

  5. FBV和CBV区别

    FBV和CBV区别         def dispatch(self, request, *args, **kwargs):        # 做分发的        if request.meth ...

  6. Redis安装测试

    1.在线下载,redis是C语言开发的,编译需要依赖一个gcc的环境: yum install gcc-c++,需要保证网络畅通,在线安装: 键入y 环境安装完成后,接下来安装redis; 可以先去h ...

  7. 框架之Tornado(简单介绍)

    引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有 ...

  8. [Flutter] Android沉侵式标题栏顶部叠加层去除

    可能你的app是这样: 框起来部分和标题栏颜色并不一致. 调用下面的代码可以变成一样. import 'package:flutter/services.dart'; static SystemUiO ...

  9. SVN的使用----经历

    一,使用SVN down文件到本机 svn co path1 path2 co是checkout的简写 path1是源文件路径 path2是目标文件存放目录 比如::下面的方式是下载到当前目录. ++ ...

  10. 微信公众平台开发者认证,node

    纯属分享 app.js var express = require('express'); var path = require('path'); var app = express(); ; var ...