python队列基本操作和多线程队列
作者:侯小啾? 发布时间:2021-01-02 23:28:46
标签:python,队列,多线程
一、队列基本操作
from queue import Queue
q = Queue(5) # 创建一个容量为5的队列。如果给一个小于0的数,则队列为无限大小。(这是官方的解释,实际不是无限大小,而是跟内存有关)
# 存储数据
q.put(123) # 数值
q.put('hello world!') # 字符串
q.put(['hello', 'world']) # 列表
q.put(('hello', 'world')) # 元组
q.put({'hello': 'world'}) # 字典
# 如果再试图存储第六个,则会发生阻塞,因为容量已设定为5
# q.put({'hello': 'python'})
取出队列中的值:
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
如图五个值被依次取出。Queue
队列遵循的是先进先出。
q.put_nowait()
q.put_nowait()
方法可以无阻碍地向队列中添加内容,如果队列已满则会立即报错,不会等待(即不会发生阻塞)。
q.get_nowait()
q.get_nowait()
方法可以无阻碍地从队列中取出内容,如果队列是空的则也会直接报错,不会等待。
具体使用不再示例。
查看队列当前大小
q.qsize()
print(q.qsize())
print(q.get())
print(q.qsize())
print(q.get())
print(q.qsize())
print(q.get())
print(q.qsize())
print(q.get())
print(q.qsize())
print(q.get())
print(q.qsize())
如图,每取出一个值,队列大小就减一。同样每存入一个值队列大小就会加一。
q.full()
判断队列是否是满的。
q.empty()
判断队列是否是空的。
print(q.full())
print(q.get())
print(q.get())
print(q.full())
print(q.empty())
print(q.get())
print(q.get())
print(q.get())
print(q.empty())
二、多线程队列
from queue import Queue
import threading
import time
# 存储值,每隔一秒存储一个
def set_value(q):
num = 0
while True:
q.put(num)
num += 1
time.sleep(1)
# 取值,不间断地取
def get_value(q):
while True:
print(q.get())
if __name__ == '__main__':
q = Queue(4)
t1 = threading.Thread(target=set_value, args=(q, ))
t2 = threading.Thread(target=get_value, args=(q, ))
t1.start()
t2.start()
程序开始运行,一边存储,一边取值:
此思想应用在爬虫上,即一边访问并获取数据,一边下载数据。
来源:https://skylarkprogramming.blog.csdn.net/article/details/122774661
0
投稿
猜你喜欢
- django模板使用media文件夹,想要在前端通过{{ MEDIA_URL }}无法显示图片,没有取到Media_url的值解决办法:TE
- 将数据库中的信息存储至XML文件中:save.asp<!-- #include file="adovbs
- JavaScript 代码一般最常见的语法格式就是定义函数 function xxx(){/*code...*/},经常有这样的一大堆函数定
- 本文实例为大家分享了python3磁盘空间监控的具体代码,供大家参考,具体内容如下软硬件环境python3apscheduler前言在做频繁
- 每个 ndarray 都有一个关联的数据类型 (dtype) 对象。这个数据类型对象(dtype)告诉我们数组的布局。这意味着它为我们提供了
- isset(PHP 3, PHP 4, PHP 5 )isset -- 检测变量是否设置描述bool isset ( mixed var [
- 在JavaScript中,我们应该尽可能的用局部变量来代替全局变量,这句话所有人都知道,可是这句话是谁先说的?为什么要这么做?有什么根据么?
- value_counts()方法返回一个序列Series,该序列包含每个值的数量(对于数据框中的任何列,value_counts()方法会返
- 如果你是一位ASP爱好者,你一定想过ASP的执行效率如何?大家都知道ASP效率和CGI的比,在访问量少的时候,它们是不相上下的,有时可能CG
- jqGrid是一个优秀的基于jQuery的DataGrid框架,想必大伙儿也不陌生,网上基于ASP的资料很少,我提供一个,数据格式是json
- 本文的主要内容是向大家分享几个Python面试中的T题目,同时给出了答案并对其进行分析,具体如下。本文的原文是5 Great Python
- 内容摘要:ASP开发人员为了在他们的设计项目中获得更好的性能和可扩展性而不断努力。幸运地是,有许多书籍和站点在这方面提供了很好的建议。但是这
- 关于电脑的垃圾清理操作,已经有很多的成熟的软件可以帮助我们完成C盘的垃圾清理操作,比如360等等。但是使用三方的清理软件往往伴随着很多的广告
- 就服务器端处理而言,ASP是产生动态Web网页的一种相对较新的技术。动态页意味着什么呢?先暂时不考虑客户端相关功能上的进展,也不讨论客户端脚
- 两段使用键盘的上下键进行选择的代码:<Script Language="JScript"> &
- 从而达到方便快捷的目的,但是它在存储信息的时候往往会有一些敏感的东西,这些东西可能成为被攻击的目标,如银行的账号、信用卡事务或档案记录等。这
- 网页制作中用到的特效字,你一定是用图象处理软件制作的吧!告诉你,不用图象处理软件,我也能做出漂亮的特效字来,你看,阴影字我就是这样做出来的。
- 今天逛论坛时看到有朋友问,是否有专门教Javascript的学校,这里想想把自己的一点建议和自己3年来的前端Javascript开发的经验跟
- 本文实例为大家分享了Python使用Pillow添加水印的具体代码,供大家参考,具体内容如下python数据分析得到的图片,并对照片添加水印
- whoosh的官方介绍:http://whoosh.readthedocs.io/en/latest/quickstart.html因为做的