Queue 实现生产者消费者模型(实例讲解)


Posted in Python onNovember 13, 2017

Python中,队列是线程间最常用的交换数据的形式。

Python Queue模块有三种队列及构造函数:

1、Python Queue模块的FIFO队列先进先出。 class Queue.Queue(maxsize)

2、LIFO类似于堆,即先进后出。 class Queue.LifoQueue(maxsize)

3、还有一种是优先级队列级别越低越先出来。 class Queue.PriorityQueue(maxsize)

此包中的常用方法(q = Queue.Queue()):

q.qsize() 返回队列的大小

q.empty() 如果队列为空,返回True,反之False

q.full() 如果队列满了,返回True,反之False

q.full 与 maxsize 大小对应

q.get([block[, timeout]]) 获取队列,timeout等待时间

q.get_nowait() 相当q.get(False)

非阻塞 q.put(item) 写入队列,timeout等待时间

q.put_nowait(item) 相当q.put(item, False)

q.task_done() 在完成一项工作之后,q.task_done() 函数向任务已经完成的队列发送一个信号

q.join() 实际上意味着等到队列为空,再执行别的操作

# coding=utf-8

import Queue
import threading
import time


q = Queue.Queue(maxsize=10) # 创建一个队列对象,长度限制为10,maxsize小于1就代表无限制


def producer(name):
  count = 1
  while True:
    q.put(count) # 将值放入队列中 默认block为True,无数据时调用线程暂停,否则抛出异常
    print "%s 生产了包子 %d" % (name, count)
    count += 1
    time.sleep(0.5)


def consumer(name):
  while True:
    conut_con = q.get() # 从队列中取值 默认block为True,无数据时调用线程暂停,否则抛出异常
    print "%s 吃掉了包子 %d" % (name, conut_con)
    time.sleep(2)


pro = threading.Thread(target=producer, args=("德源",))
con = threading.Thread(target=consumer, args=("xu",))
con2 = threading.Thread(target=consumer, args=("sx",))

pro.start()
con.start()
con2.start() # 开启线程

以上这篇Queue 实现生产者消费者模型(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的文件和目录操作实现代码
Mar 13 Python
Python中使用gzip模块压缩文件的简单教程
Apr 08 Python
python中安装模块包版本冲突问题的解决
May 02 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
python pandas库的安装和创建
Jan 10 Python
Django中使用Whoosh进行全文检索的方法
Mar 31 Python
django使用xadmin的全局配置详解
Nov 15 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
通俗讲解python 装饰器
Sep 07 Python
Python装饰器详细介绍
Mar 25 Python
python图像常规操作
Nov 11 #Python
python中实现k-means聚类算法详解
Nov 11 #Python
Python编程之基于概率论的分类方法:朴素贝叶斯
Nov 11 #Python
Python内存管理方式和垃圾回收算法解析
Nov 11 #Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 #Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 #Python
python基础练习之几个简单的游戏
Nov 10 #Python
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
基于PHP编程注意事项的小结
2013/04/27 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
基于jquery的$.ajax async使用
2011/10/19 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
python抓取文件夹的所有文件
2018/02/27 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
python实现简易内存监控
2018/06/21 Python
python爬虫请求头设置代码
2020/07/28 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
化学系大学生自荐信范文
2014/03/01 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
建筑施工安全责任书
2014/07/24 职场文书
华山导游词
2015/02/03 职场文书
销售督导岗位职责
2015/04/10 职场文书
同意报考公务员证明
2015/06/17 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python