本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-07(11)

2020-08(42)

Python学习 Day54 Queue线程安全队列 03

发布于2021-05-18 20:18     阅读(801)     评论(0)     点赞(24)     收藏(4)



Queue线程安全队列

一、Queue线程安全队列概述

Python内置的线程安全的模块叫queue

  • Queue是线程安全的队列,在使用时无需加锁,可以在多线程中直接使用
  • 队列也是实现线程间同步的方式
  • FIFO(先进先出)队列Queue
  • LIFO(后进先出)LifoQueue

二、Queue队列的常用函数

函数描述
qsize()返回队列的大小
empty()判断队列是否为空
full()判断队列是否满了
get()从队列中取最先插入的数据
put()将一个数据放到队列中
#创建一个队列,最多可以存放5个数据
q = Queue(5)
for i in range(4):
    q.put(i)
print('队列中实际数据的多少:',q.qsize())
#取出队列当中的数据
for _ in range(5): #_只记录循环次数,不做变量使用
    try:           #队列中只有4个元素,而当前要取5次,会造成阻塞,程序在取完所有数据后不会停止,直到再放入一个数据完成第5次取数
                   #所以在此处使用try...except...语句,使取完所有数后程序即结束
        print('取出的元素:',q.get(block=False)) #通过设置block=False参数,使程序取完队列当中的数据即退出
    except:
        print('数据已经取完,队列目前为空')
        break

if q.full():
    print('队列已满')
else:
    print('队列当前数据的个数为:',q.qsize(),'队列未满')

print('-----------------------------------------------')
q2 = Queue(5)
for i in range(6): #队列当中最多存放5个数据,而此处放入6个数据,程序会等待其中一个元素被取出后,放入第六个元素才会结束,程序又进入拥塞状态
    try:
        q2.put(i,block=False)
    except:
        print('队列已满')
        break
队列中实际数据的多少: 4
取出的元素: 0
取出的元素: 1
取出的元素: 2
取出的元素: 3
数据已经取完,队列目前为空
队列当前数据的个数为: 0 队列未满
-----------------------------------------------
队列已满

Process finished with exit code 0

三、Queue线程安全队列的使用

from queue import Queue
import random
import time
import threading

def add_value(q): #存数据
    while True:
        q.put(random.randint(100,1000))
        time.sleep(1)

def get_value(q): #取数据
    while True:
        print('取出了元素:{0}'.format(q.get()))

def start():
    q = Queue(10)
    t1 = threading.Thread(target=add_value,args=(q,))
    t2 = threading.Thread(target=get_value,args=(q,))
    t1.start()
    t2.start()

if __name__ == '__main__':
    start()

在这里插入图片描述

原文链接:https://blog.csdn.net/ShengXIABai/article/details/116800156






所属网站分类: 技术文章 > 博客

作者:python好学吗

链接:https://www.pythonheidong.com/blog/article/970147/fe128b1b64649fd356b2/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

24 0
收藏该文
已收藏

评论内容:(最多支持255个字符)