最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

利用python生成器实现生产者消费者模型的方法介绍

来源:动视网 责编:小采 时间:2020-11-27 14:25:07
文档

利用python生成器实现生产者消费者模型的方法介绍

利用python生成器实现生产者消费者模型的方法介绍:假如说,没有生成器这种对象,那么如何实现这种简单的生产者消费者模型呢?import timedef producer(): pro_list = [] for i in range(10000): print "包子%s制作ing" %(i) time.sleep(0.5) pro_list.
推荐度:
导读利用python生成器实现生产者消费者模型的方法介绍:假如说,没有生成器这种对象,那么如何实现这种简单的生产者消费者模型呢?import timedef producer(): pro_list = [] for i in range(10000): print "包子%s制作ing" %(i) time.sleep(0.5) pro_list.


假如说,没有生成器这种对象,那么如何实现这种简单的“生产者消费者”模型呢?

import time

def producer():

pro_list = []

for i in range(10000):

print "包子%s制作ing" %(i)

time.sleep(0.5)

pro_list.append("包子%s" %i)

return pro_list

def consumer(pro_list):

for index,stuffed_bun in enumerate(pro_list):

print "第%s个人,吃了第%s个包子" %(index,stuffed_bun)

pro_list = producer()

consumer(pro_list)

上面这种生产者与消费者模型有一个严重的问题,就是效率极低,而且在“生产”的过程中,消费者要等待,一直等待所有的包子都生产结束,消费者才可以吃,这种模式效率低又不合理。

想要提高效率,就要对生产的过程,进行修改,生产和消费过程应该是两个的个体,生产和消费应该做到“并发”(同时)的操作。

import time

def consumer(name):

print '我是%s,准备开始吃包子了'%(name)

while True:

stuffed_bun = yield

time.sleep(1)

print "%s很开心的把%s吃掉了" %(name,stuffed_bun)

def producer():

p1 = consumer("suhaozhi")

p2 = consumer("ayumi")

p1.next() #执行next方法后,死循环开始

p2.next()

for i in range(10):

time.sleep(1)

p1.send("包子%s" %(i)) #通过send给yield赋值,yield在将值赋给stuffed_bun

p2.send("包子%s" %(i))

producer()

文档

利用python生成器实现生产者消费者模型的方法介绍

利用python生成器实现生产者消费者模型的方法介绍:假如说,没有生成器这种对象,那么如何实现这种简单的生产者消费者模型呢?import timedef producer(): pro_list = [] for i in range(10000): print "包子%s制作ing" %(i) time.sleep(0.5) pro_list.
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top