python queue队列

作用:

   解耦:使程序直接实现松耦合,修改一个函数,不会有串联关系。

   提高处理效率:FIFO = 现进先出,LIFO = 后入先出。

 

队列:

  队列可以并发的派多个线程,对排列的线程处理,并切每个需要处理线程只需要将请求的数据放入队列容器的内存中,线程不需要等待,当排列完毕处理完数据后,线程在准时来取数据即可。请求数据的线程只与这个队列容器存在关系,处理数据的线程down掉不会影响到请求数据的线程,队列会派给其他线程处理这分数据,它实现了解耦,提高效率。队列内会有一个有顺序的容器,列表与这个容器是有区别的,列表中数据虽然是排列的,但数据被取走后还会保留,而队列中这个容器的数据被取后将不会保留。当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用。

1、队列有顺序的容器
2、队列数据只有一份,取出来就没了
3、队列数据放在内存里

 

Python三种类型的队例:

Queue:FIFO 即first in first out 先进先出
LifoQueue:LIFO 即last in first out 后进先出
PriorityQueue:优先队列,级别越低,越优先

参数介绍:

# 先入先出 maxsize 可设置大小,设置block=False抛异常
class queue.Queue(maxsize=0)  # 后进先出 
class queue.LifoQueue(maxsize=0)# 存储数据时可设置优先级的队列
# 优先级设置数越小等级越高
class queue.PriorityQueue(maxsize=0) # 放入数据
Queue.put(item, block=True, timeout=None)# 取出数据 #没有数据将会等待
Queue.get(block=True, timeout=None)# 如果1秒后没取到数据就退出
Queue.get(timeout = 1)# 取数据,如果没数据抛queue.Empty异常
Queue.get_nowait()# 查看队列大小
Queue.qsize()# 返回True,如果空
Queue.empty() #return True if empty  # 设置队列大小
Queue.full() # 后续调用告诉队列,任务的处理是完整的。
Queue.task_done()#print(q.get())#取不到会一直等着,卡着了
#print(q.get(timeout=5))#取不到卡5s,抛出异常
#print(q.get(block=True))#取不到会一直等着,卡着了
#print(q.get(block=False))#取不到会抛异常
#print(q.get_nowait())#取不到抛异常
队列的几种类型实例:import  queue,time,threading
q=queue.Queue()#先入先出,默认未限制大小
q=queue.Queue(maxsize=3)#可存入3个数
q.put('王荔1')#存数据,如果存满了一直卡着
q.put('王荔2')
q.put('王荔3')
print("当前队列剩余%s个"%(q.qsize()))#查当前队列大小
print(q.get())
print(q.get())
print(q.get())
print("当前队列剩余%s个"%(q.qsize()))#先入后出
q=queue.LifoQueue()#先入后出
q.put(1)
q.put(2)
q.put(3)
print("当前队列剩余%s个"%(q.qsize()))
print(q.get())
print(q.get())
print(q.get())
print("当前队列剩余%s个"%(q.qsize()))#可设置优先取出
q=queue.PriorityQueue()
q.put((-1,"王荔"))
q.put((2,"橙子"))
q.put((3,"橙汁"))
print("当前队列剩余%s个"%(q.qsize()))
print(q.get())
print(q.get())
print(q.get())
print("当前队列剩余%s个"%(q.qsize()))C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
当前队列剩余3个
王荔1
王荔2
王荔3
当前队列剩余0个
当前队列剩余3个
3
2
1
当前队列剩余0个
当前队列剩余3个
(-1, '王荔')
(2, '橙子')
(3, '橙汁')
当前队列剩余0个Process finished with exit code 0

 

 

#生产者与消费者模型实例:import threading,time
import queue
q = queue.Queue(maxsize=10)
def Producer(name):count = 1while True:q.put("骨头%s" % count)print("生产了骨头",count)count +=1time.sleep(0.1)
def  Consumer(name):while True:print("[%s] 取到[%s] 并且吃了它..." %(name, q.get()))time.sleep(1)
p = threading.Thread(target=Producer,args=("Alex",))
c = threading.Thread(target=Consumer,args=("ChengRonghua",))
c1 = threading.Thread(target=Consumer,args=("王森",))
p.start()
c.start()
c1.start()C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
生产了骨头 1
[ChengRonghua] 取到[骨头1] 并且吃了它...
生产了骨头 2
[王森] 取到[骨头2] 并且吃了它...
生产了骨头 3
生产了骨头 4
生产了骨头 5
生产了骨头 6
生产了骨头 7
生产了骨头 8
生产了骨头 9
生产了骨头 10
[ChengRonghua] 取到[骨头3] 并且吃了它...
生产了骨头 11
[王森] 取到[骨头4] 并且吃了它...
生产了骨头 12
生产了骨头 13
生产了骨头 14
[ChengRonghua] 取到[骨头5] 并且吃了它...
生产了骨头 15
[王森] 取到[骨头6] 并且吃了它...
生产了骨头 16
[ChengRonghua] 取到[骨头7] 并且吃了它...
生产了骨头 17
[王森] 取到[骨头8] 并且吃了它...
生产了骨头 18Process finished with exit code -1

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】ffmpeg模块查询视频、音频信息

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量&#xff…

log4j学习

依赖 <!--log4j依赖--> <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version> </dependency><!--测试--> <dependency><groupId>org.junit.jupiter</g…

navicat连接远程mysql数据库

前提&#xff1a;保证你的navicat数据是允许外界可以连接 1.保证两台电脑应在同一局域网内 2.查询被连接数据库电脑的ip 3.在连接端&#xff0c;主机那个填入ip地址&#xff0c;用户名&#xff0c;密码等信息。测试连接 4、连接成功后&#xff0c;用此ip即为连接数据库的ho…

【Python】ffmpeg模块处理视频、音频信息

多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。 这里主要介绍一下FFmpeg的一些常用参数&#xff0c;并且主要功能&#xff1a;截取视频、视频格式转换、视频分辨率转换、视频合并、提取视频、提取音频、提取图片、视频水…

【探索测试篇】探索无界,BUG无限,让程序猿头疼的测试技术

探索无界&#xff0c;BUG无限 一、修改系统时间 当功能模块中存在倒计时、计时器、时间&#xff0c;与时间有关系时&#xff0c;尝试修改系统时间&#xff0c;测试系统时间是否参与计算&#xff0c;修改系统时间是否会影响到倒计时、计时、时间等与时间有关系的模块 例&#…

【数据库】Mysql函数DATE_ADD() 增加日期/时间

有这样一个场景&#xff1a;数据库还款计划表有到期还款日字段&#xff0c;正常是每月2日。但这个字段有些是每月1日&#xff0c;现需要统一改成2日&#xff0c;可以用到DATE_ADD函数&#xff0c;但是执行时需要注意&#xff1a;只能执行一次 DATE_ADD(date,INTERVAL expr type…

python 时间函数小总结

时间戳&#xff1a;从1970年1月1日00:00:00开始按秒计算的偏移量。举个例子&#xff0c;现在是2017年6月11的下午16:54:32&#xff0c;那么print(time.time())输出的值是1497171320.99就代表现在的时间戳。 元组&#xff08;struct_time&#xff09;&#xff1a;struct_time元组…

【数据库】Mysql函数DATE_FORMAT() 显示日期/时间

上一篇文章介绍了Mysql函数DATE_ADD()&#xff0c;这篇文章主要是为了解决上次遗留的问题&#xff1a; 把问题变得更复杂一点&#xff1a;假设有两个借款&#xff0c;其中一个借款1的到期还款日为2日&#xff0c;借款2的到期还款日为10日。这个字段loan_pmt_due_date日期有多个…

fiddler抓包工具使用技巧

一、快速找所有post、get、Result code200请求 1、所有post请求的图标都是带有向右的小箭头的那种&#xff0c;如果能让所有向右的小箭头都高亮显示就好了解决方案&#xff1a;输入命令&#xff1a;post 然后点击enter键回车&#xff0c;可以看到所有的post请求都是以蓝色的底…

python文件操作小总结

os.getcwd() 方法用于返回当前工作目录 os.path.getatime(file) 输出文件访问时间 os.path.getctime(file) 输出文件的创建时间 os.path.getmtime(file) 输出文件最近修改时间

【数据库】Mysql的CONCAT()函数拼接字符串

mysql CONCAT()函数用于将多个字符串连接成一个字符串&#xff0c;是最重要的mysql函数之一&#xff1a; mysql CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL &#xff0c;则返回值为 NULL。 回到上一篇文章的问题&#xff1a;假设有两个借款…

Jmeter中JDBC Connection Configuration实现MySQL JDBC Request数据库处理

一、JDBC Connection Configuration数据库配置元件 线程组-添加-配置元件-JDBC Connection Configuration Name:元件命名空间&#xff0c;请随意 Comments:注释&#xff0c;请随意 Variable Name:数据库连接池的名称&#xff0c;因为一个测试计划可以有多个JDBC Connection …

【数据库】Mysql的REPLACE()函数替换字符串

mysql中replace函数直接替换mysql数据库中某字段中的特定字符串&#xff0c;用起来非常的方便。 REPLACE(str,from_str,to_str) 第一个字符串str中&#xff0c;将from_str替换为to_str 回到上一篇文章的问题&#xff1a;假设有两个借款&#xff0c;其中一个借款…

python 根据时间间隔删除文件夹内修改时间比较早的文件

import os import time import datetime def fileremove(filename, timedifference):#getmtime获取文件的修改时间date_wintime datetime.datetime.fromtimestamp(os.path.getmtime(filename))date_unixtimeos.path.getmtime(filename)now_wintime datetime.datetime.now()no…

百度智能云文档汇总

百度智能云文档汇总目录&#xff1a; 一、百度语音-->https://cloud.baidu.com/doc/SPEECH/index.html 百度语音提供对自然语言文本的解析服务。自然语言文本是用户意图的表述&#xff0c;意图解析的目的就是将文本解析成意图表示。 二、文字识别-->https://cloud.baidu…

位、字,字节与KB的关系

位b&#xff1a;我们常说的bit&#xff0c;位就是传说中提到的计算机中的最小数据单位&#xff1a;说白了就是0或者1&#xff1b;计算机内存中的存储都是01这两个东西。 字节B&#xff1a;英文单词&#xff1a;&#xff08;byte&#xff09;&#xff0c;byte是存储空间的基本计…

Python单元测试框架之unittest+requests+ddt+excel接口自动化测试

unitetest是python里单元测试框架&#xff0c;是基于 java 的 junit 测试框架 相当于是一个 python 版的 junit&#xff0c;除了 unittest,还有一个 pytest 框架 unittest.TestCase&#xff1a;TestCase类&#xff0c;所有测试用例类继承的基本类 一个TestCase的实例就是一个…

python datetime

datetime是Python处理日期和时间的标准库。 获取当前日期和时间 我们先看如何获取当前日期和时间&#xff1a; >>> from datetime import datetime >>> now datetime.now() # 获取当前datetime >>> print(now) 2015-05-18 16:28:07.198690 >…

高效精准分析定位系统BUG,让你无所不能

项目版本上线发版后&#xff0c;经常会收到领导、产品、研发、业务、用户等反馈过来各种各样BUG&#xff0c;令人心惊胆战&#xff0c;措手不及 这时领导会第一时间找你沟通&#xff0c;让其定位排查原因&#xff0c;解决处理 很多测试人员第一反应: 需求没说这样&#xff1f…

B KB MB

1字节8位8bit 名称缩写大小1千字节 KB 2^10 1,024 字节1 兆字节 MB 2^20 1,048,576 字节1 千兆字节 GB 2^30 1,073,741,824 字节1 T字节 TB 2^40 1,099,511,627,776 字节