Python queue队列原理与应用案例分析


Posted in Python onSeptember 27, 2019

本文实例讲述了Python queue队列原理与应用。分享给大家供大家参考,具体如下:

作用:

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

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

队列:

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

参数介绍:

# 先入先出 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()

生产者消费者模型:

import threading,time
import queue
# 最多存入10个
q = queue.Queue(maxsize=10)
def producer(name):
  count = 1
  while True:
      # 生产一块骨头
      q.put("骨头 %s" % count )
      print("生产了骨头",count)
      count +=1
      time.sleep(0.3)
def consumer(name):
  while True:
    print("%s 取到[%s] 并且吃了它" %(name, q.get()))
    time.sleep(1)
    # 告知这个任务执行完了
    q.task_done()
# 生成线程
p = threading.Thread(target=producer,args=("德国骨科",))
c = threading.Thread(target=consumer,args=("陈狗二",))
d = threading.Thread(target=consumer,args=("吕特黑",))
# 执行线程
p.start()
c.start()
d.start()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中分数的相关使用教程
Mar 30 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
PyQt5实现拖放功能
Apr 25 Python
Python反射和内置方法重写操作详解
Aug 27 Python
Python 多线程不加锁分块读取文件的方法
Dec 11 Python
Python实现FM算法解析
Jun 18 Python
详解使用Python下载文件的几种方法
Oct 13 Python
python 实现多维数组(array)排序
Feb 28 Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 Python
python中zip()函数遍历多个列表方法
Feb 18 Python
Python 中数组和数字相乘时的注意事项说明
May 10 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
Mar 20 Python
python多环境切换及pyenv使用过程详解
Sep 27 #Python
python 哈希表实现简单python字典代码实例
Sep 27 #Python
python实现发送form-data数据的方法详解
Sep 27 #Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 #Python
Pycharm 字体大小调整设置的方法实现
Sep 27 #Python
python3 写一个WAV音频文件播放器的代码
Sep 27 #Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 #Python
You might like
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
ExtJS 入门
2010/10/29 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
基于Python的文件类型和字符串详解
2017/12/21 Python
详解Python字符串切片
2019/05/20 Python
简单了解Python3里的一些新特性
2019/07/13 Python
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
法人授权委托书样本
2014/09/19 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
老干部工作汇报材料
2014/10/28 职场文书
2014年教务处工作总结
2014/12/03 职场文书
2015年行政部工作总结
2015/04/28 职场文书
食品安全责任书范本
2015/05/09 职场文书
董存瑞观后感
2015/06/11 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
2019年大学推荐信
2019/06/24 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
python中的被动信息搜集
2021/04/29 Python
一文搞懂Redis中String数据类型
2022/04/03 Redis