散仙使用python3.4模拟实现的一个生产者与消费者的例子,用到的知识有线程,队列,循环等,源码如下:
import queue
import time
import threading
import random
q=queue.Queue(5)
#生产者
def pr():
name=threading.current_thread().getName()
print(name+"线程启动......")
for i in range(100):
t=random.randint(2,9)
print(name,"睡眠时间: ",t)
time.sleep(t);
d="A"+str(i)
print(name+"正在存第",i+1,"个数据: ",d)
#q.put("A"+str(i),False,2000)
q.put(d)
print("生产完毕!")
#消费者
def co():
name=threading.current_thread().getName()
time.sleep(1)
print(name+"线程启动......")
while True:
print(name+"检测到队列数量: ",q.qsize())
t=random.randint(2,9)
print(name,"睡眠时间: ",t)
data=q.get();
print(name+"消费一个数据: ",data)
p=threading.Thread(target=pr,name="生产者")
c=threading.Thread(target=co,name="消费者1")
c2=threading.Thread(target=co,name="消费者2")
p.start()
c.start()
c2.start()
在本例里面散仙启动了1个生产者线程,2个消费者线程,打印效果如下:
生产者线程启动......
生产者 睡眠时间: 4
消费者1线程启动......
消费者1检测到队列数量: 0
消费者1 睡眠时间: 2
消费者2线程启动......
消费者2检测到队列数量: 0
消费者2 睡眠时间: 3
生产者正在存第 1 个数据: A0
生产者 睡眠时间: 9
消费者1消费一个数据: A0
消费者1检测到队列数量: 0
消费者1 睡眠时间: 8
生产者正在存第 2 个数据: A1
生产者 睡眠时间: 5
消费者2消费一个数据: A1
消费者2检测到队列数量: 0
消费者2 睡眠时间: 7
生产者正在存第 3 个数据: A2
生产者 睡眠时间: 8
消费者1消费一个数据: A2
消费者1检测到队列数量: 0
消费者1 睡眠时间: 2
生产者正在存第 4 个数据: A3
生产者 睡眠时间: 7
消费者2消费一个数据: A3
消费者2检测到队列数量: 0
消费者2 睡眠时间: 9
生产者正在存第 5 个数据: A4
生产者 睡眠时间: 2
消费者1消费一个数据: A4
消费者1检测到队列数量: 0
消费者1 睡眠时间: 5
生产者正在存第 6 个数据: A5
生产者 睡眠时间: 5
消费者2消费一个数据: A5
消费者2检测到队列数量: 0
消费者2 睡眠时间: 6
生产者正在存第 7 个数据: A6
生产者 睡眠时间: 7
消费者1消费一个数据: A6
消费者1检测到队列数量: 0
消费者1 睡眠时间: 7
生产者正在存第 8 个数据: A7
生产者 睡眠时间: 3
消费者2消费一个数据: A7
消费者2检测到队列数量: 0
消费者2 睡眠时间: 8
生产者正在存第 9 个数据: A8
生产者 睡眠时间: 2
消费者1消费一个数据: A8
消费者1检测到队列数量: 0
消费者1 睡眠时间: 4
生产者正在存第 10 个数据: A9
生产者 睡眠时间: 4
消费者2消费一个数据: A9
消费者2检测到队列数量: 0
消费者2 睡眠时间: 5
生产者正在存第 11 个数据: A10
生产者 睡眠时间: 2
消费者1消费一个数据: A10
消费者1检测到队列数量: 0
消费者1 睡眠时间: 3
生产者正在存第 12 个数据: A11
生产者 睡眠时间: 3
消费者2消费一个数据: A11
消费者2检测到队列数量: 0
消费者2 睡眠时间: 3
生产者正在存第 13 个数据: A12
生产者 睡眠时间: 3
消费者1消费一个数据: A12
消费者1检测到队列数量: 0
消费者1 睡眠时间: 3
生产者正在存第 14 个数据: A13
生产者 睡眠时间: 8
消费者2消费一个数据: A13
消费者2检测到队列数量: 0
消费者2 睡眠时间: 7
生产者正在存第 15 个数据: A14
生产者 睡眠时间: 3
消费者1消费一个数据: A14
消费者1检测到队列数量: 0
消费者1 睡眠时间: 7
生产者正在存第 16 个数据: A15
生产者 睡眠时间: 2
消费者2消费一个数据: A15
消费者2检测到队列数量: 0
消费者2 睡眠时间: 9
从这个例子中,我们发现利用队列,来做同步时非常简单方便的,除此之外队列,还有如下几个方便的方法:
介绍一下此包中的常用方法:
Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.full 与 maxsize 大小对应
Queue.get([block[, timeout]])获取队列,timeout等待时间
Queue.get_nowait() 相当Queue.get(False)
非阻塞 Queue.put(item) 写入队列,timeout等待时间
Queue.put_nowait(item) 相当Queue.put(item, False)
Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号
Queue.join() 实际上意味着等到队列为空,再执行别的操作
分享到:
相关推荐
opencv-python 3.4.1.15 opencv-contrib-python 3.4.1.15 win64版,opencv-python 3.4.1.15 opencv-contrib-python 3.4.1.15,支持版本:python3.4,3.5,3.6
在Windows环境下,通常会有一个名为"pyinstall-python3.4安装包"的文件,这可能是安装程序的可执行文件,解压后应双击运行来启动安装过程。 在安装过程中,有几个关键的选项需要注意。首先,你可以选择自定义安装...
python3.4版32位 安装pycharm(平台)后,需要安装python3.5(编辑器)才可以编辑python #实例 #codeing = utf-8 #_author_ = 'chang' print ("Hello World") #python3.5 #print "Hello World"; #python2.7
适用于Windows64位,对应Python 3.6版本,OpenCV为3.4.1.15版本;内含有《opencv_contrib_python-3.4.1.15-cp36-cp36m-win_amd64.whl》和《opencv_python-3.4.1.15-cp36-cp36m-win_amd64.whl》两个文件
这个版本的文档是学习Python3.4的基础资源,特别是对于初学者来说,它包含了详尽的教程和说明,能够帮助他们系统地掌握这门语言。 1. **基础语法**:Python3.4的中文手册会介绍基本的编程概念,如变量、数据类型...
numpy for python3.4
标题“PYQT5forpython3.4”指的是一个专为Python 3.4设计的PYQT5安装包,特别强调了这是最后一个适用于Windows XP操作系统的版本。PYQT5是一个强大的Python绑定库,它提供了对Qt 5框架的访问,使开发者能够在Python...
python.exe PYTHON3.4
**Python3.4 PyQt5 32位安装版** Python3.4是Python编程语言的一个重要版本,发布于2014年3月,引入了许多改进和新特性,包括增加asyncio模块,用于异步I/O操作,以及对元类(metaclasses)的增强支持。Python3.4是...
《OpenCV-Python3.4.1.15:手把手教你解决安装难题》 OpenCV,全称Open Source Computer Vision Library,是一个开源的计算机视觉库,它包含了众多图像处理和计算机视觉的算法,广泛应用于图像分析、机器学习以及...
这些依赖包在你提到的压缩包“python3.4matplotlib绘图包(X64)”中应该已经包含。 首先,我们来看`matplotlib`。这是Python最广泛使用的数据可视化库之一,它的设计灵感来源于MATLAB。matplotlib提供了一个命令式...
多线程实现生产者消费者模型:锁(Lock)、信号量(Semaphore、BoundedSemaphore)、条件(Condition)、队列(Queue)、事件(Event) 多进程程实现生产者消费者模型:信号量(Semaphore)、条件(Condition)、...
python3.4配套的twisted,安装scrapy需要安装twisted,此版本对应python3.4
Windows64位,Python3.4,Numpy安装包。 安装前请配置相应环境变量,在Dos下执行命令进行安装。 可参考安装教程:https://blog.csdn.net/Katrina_ALi/article/details/64922107
然而,有时候用户可能会遇到卸载问题,如标题所述,“python3.4.16490.1437702276.msi”可能无法正常卸载。这可能是由于多种原因,如安装程序损坏、注册表项未正确清理、与其他程序冲突或系统权限不足等。为了解决这...
Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python...
Python科学计算基本模块安装文件,包括Python3.4、scipy和matplotlib,均是whl文件,由于上传文件大小限制,numpy文件可在http://www.lfd.uci.edu/~gohlke/pythonlibs/中下载。whl文件可用pip安装。
Python 3.4 绿化版是一款轻量级的、便携式的 Python 开发环境,专为便于携带和快速使用而设计。绿化版通常指的是软件已经进行了一定程度的优化和封装,使得它无需安装即可在任何支持的系统上运行,减少了依赖性和...
python3.4 安装pyqt5之后没有designer 编辑器,需要安装这个模板。 下载完成之后,直接调用 pip install pyqt5_tools-5.5.1.1.2-cp34-none-win_amd64.whl 即可 是在没分了,就要1分吧
在类型注解(Type Annotations)方面,Python 3.4开始支持函数和变量的类型声明,虽然这些注解在运行时并不强制执行,但有助于代码的静态分析和IDE的智能提示,为逐步实现类型安全的Python编程打下了基础。...