python 的生产者和消费者模式_第1页
python 的生产者和消费者模式_第2页
python 的生产者和消费者模式_第3页
python 的生产者和消费者模式_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第python的生产者和消费者模式生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用通过等待消费者处理,直接扔给阻塞队列,消费者不着生产者拿数据,而是直接从阻塞队列中取,阻塞队列相当于一个缓冲区,平衡了生产者和消费者的处理能力。

四、代码案例

1、定义一个生产者

importthreading

importqueue

importtime

#定义一个生产者

defproducer():

count=0

#判断队列中任务的数量

whileq.qsize()5:

print('第%s顿饭......',count)

q.put(count)

count+=1

time.sleep(1)

2、定义一个消费者

importthreading

importqueue

importtime

#定义一个消费者

defconsumer(name):

whileTrue:

print("%s吃了第%s饭"%(name,q.get()))

3、定义一个队列

importthreading

importqueue

importtime

#定义一个队列

q=queue.Queue(maxsize=4)

t1=threading.Thread(target=producer)

t2=threading.Thread(target=consumer,args=('jibu',))

t1.start()

t2.start()

结果:

第%s顿饭......0

jibu吃了第0饭

第%s顿饭......1

jibu吃了第1饭

第%s顿饭......2

jibu吃了第2饭

第%s顿饭......3

jibu吃了第3饭

第%s顿饭......4

jibu吃了第4饭

第%s顿饭......5

jibu吃了第5饭

第%s顿饭......6

jibu吃了第6饭

第%s顿饭......7

jibu吃了第7饭

第%s顿饭......8

#另外,如果供大于求或者求大于供,可以在相对小的一方在增加线程的数量

当然如果需要进一步优化可以让消费者执行完队列中所有任务的时候告诉生产者一声

importthreading

importqueue

importtime

#定义一个生产者

defproducer():

count=0

#判断队列中任务的数量

foriinrange(5):

print('第%s顿饭......',count)

q.put(count)

count+=1

time.sleep(1)

q.join()

#定义一个消费者

defconsumer(name):

whileTrue:

print("

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论