queue模块笔记
queue被称为消息队列,数据不会混乱,也可以用于复杂业务传递元素,队列是多线程的利器,其内部有锁的机制可以控制数据的统一且安全
queue.Queue()按照先进先出原则
queue.LifoQueue()按照后进先出原则
queue.PriorityQueue()优先级队列,数字越小优先级越高
import queue
import time
t = queue.Queue(2)#设置列队大小,如果有三条数据过来那就会等待,直到取走为止
t.put('a')#put 放入列队,
t.get()
t.put('b')
t.put('c')
while True:
print(t.get())#取
time.sleep(2)
full,empty
import queue
t = queue.Queue(3)#不填就是无限
t.put('a')
print(t.empty())#问:没了吗? 如果列队中有值返回False
t.get()
print(t.empty())#没了,返回True
t.put('b')
t.put('c')
t.put('d')
print(t.full())#问:满了吗? 如果列队中满了返回True
t.get()
print(t.full())#没有满,返回false
#如果满了使用put或者空了使用get同样会报错
put
block=True
import queue
t = queue.Queue(maxsize=3)
t.put('a')
t.put('b')
t.put('c')
t.put('d',True,3)
#Queue.put(item, block=True, timeout=None),item元素,如果block=True且timeout=None该方法将一直等待直到有队列有空余空间
#如果block=True且timeout=3,也就是在3秒后抛出异常
block=False
import queue
t = queue.Queue(maxsize=3)
t.put('a')
t.put('b')
t.put('c')
t.put('d',False,None)#只要block=False,不管设不设时间,立马就会抛出异常
get
block=True
import queue
t = queue.Queue(maxsize=3)
t.get(block=True,timeout=3)#报错了
#t.get(block=True)#这样为空就等于都不写,不报错
#默认Queue.get(block=True, timeout=None),如果设置了timeout
block=False
import queue
t = queue.Queue(maxsize=3)
t.get(block=False,timeout=3)#不管设不设时间,立即报错
get_nowait和put_nowait
t.get_nowait()#立即取出一个元素,t.get_nowait(item)等价于get(item,False)
t.put_nowait('f')#立即放入一个元素,t.put_nowait(item)等价于put(item, False)
其他
t.task_done()#在完成一项工作之后,queue.task_done()函数向任务已经完成的队列发送一个信号
print(t.qsize())#返回当前队列中元素个数
t.join()#实际上意味着等到队列为空,再执行别的操作
#以上是线程queue,如果是进程之间需要相互通信(一发一收),可以主进程的对象作为一个参数传给子进程,只是copy主进程的对象,主进程和子进程不是相互公用同一数据
版权声明:本文原创发表于 博客园,作者为 RainBol本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
queue模块笔记的更多相关文章
- Python多线程笔记(三),queue模块
尽管在Python中可以使用各种锁和同步原语的组合编写非常传统的多线程程序,但有一种首推的编程方式要优于其他所有编程方式即将多线程程序组织为多个独立人物的集合,这些任务之间通过消息队列进行通信 que ...
- Python3.5 queue模块详解
queue介绍 queue是python中的标准库,俗称队列,可以直接import 引用,在python2.x中,模块名为Queue 在python中,多个线程之间的数据是共享的,多个线程进行数据交换 ...
- python Queue模块
先看一个很简单的例子 #coding:utf8 import Queue #queue是队列的意思 q=Queue.Queue(maxsize=10) #创建一个queue对象 for i in ra ...
- Python之队列queue模块使用 常见问题与用法
python 中,队列是线程间最常用的交换数据的形式.queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外. 1. 阻塞模式 import queue q = queu ...
- Python多线程(3)——Queue模块
Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes). Python 2 中的Queue模块在Python ...
- threading模块和queue模块实现程序并发功能和消息队列
简介: 通过三个例子熟悉一下python threading模块和queue模块实现程序并发功能和消息队列. 说明:以下实验基于python2.6 基本概念 什么是进程? 拥有独立的地址空间,内存,数 ...
- 同步队列-Queue模块解析
Queue模块解决了生产者.消费者问题,在多线程编程中进行线程通信的时候尤其有用,Queue类封装了加锁解锁的过程. 在Queue模块中有三种不同的队列类,区别是不同队列取出数据的顺序 ...
- 【Python@Thread】queue模块-生产者消费者问题
python通过queue模块来提供线程间的通信机制,从而可以让线程分项数据. 个人感觉queue就是管程的概念 一个生产者消费者问题 from random import randint from ...
- Python之Queue模块
Queue 1.创建一个“队列”对象 >>> import Queue >>> queue = Queue.Queue(maxsize=100) >>& ...
随机推荐
- Spring切面编程AOP
- dockerui 安装
meiya@meiya:~$ docker pull abh1nav/dockerui Using default tag: latest latest: Pulling from abh1nav/d ...
- [学习笔记] 下载、安装、启动 Eclipse(OEPE)
OEPE 的全称是: Oracle Enterprise Pack for Eclipse 截止目前的最新版本是:(12.2.1.9) 下载地址:(需要在甲骨文官网注册一个账户才能下载) https: ...
- Linux 环境变量设置的几种方法
From:http://home.eeworld.com.cn/home.php?mod=space&uid=291513&do=blog&id=40557 环境变量是和She ...
- [转帖]iis最大并发连接数、队列长度、最大并发线程数、最大工作进程数
iis最大并发连接数.队列长度.最大并发线程数.最大工作进程数 2018-10-17 12:49:03 牛兜兜 阅读数 2952 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...
- Servlet 表单及上传文件
// 文件路径 D:\ApacheServer\web_java\HelloWorld\src\com\test\TestServletForm.java package com.test; impo ...
- 剑指offer13:数组[奇数,偶数],奇数偶数相对位置不变。
1. 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 2. 思路和方 ...
- smarty中常用的流程控制逻辑
if else {if $age > 18} <div>年满十八岁!</div> {else if $age > 16} <div>年满十六岁!< ...
- 从零开始学Flask框架-005
表单 Flask-WTF 项目结构 pip install flask-wtf 为了实现CSRF 保护,Flask-WTF 需要程序设置一个密钥.Flask-WTF 使用这个密钥生成加密令牌,再用令牌 ...
- Python2和3字符编码的区别
Python2和3字符编码的区别 一.字符编码应用之Python 1.1 执行Python程序的三个阶段 Python test.py(我再强调一遍,执行test.py的第一步,一定是先将文件内容从硬 ...