Python基础-----生成器函数(生产者消费者模型)

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# yield x相当于return  控制的是函数的返回值
# 在定义生成器函数的yield时,可以给yield赋值
# x = yield的另一个特性,接收send传过来的值,赋给x
# send类似于__next__()方法,不过生成器刚启动时,不能send一个不为None的值,
# 所以先要运行__next__()方法现启用生成器。

'''
def test():
   print('开始生产~~~')
   fir = yield 1
   print('第一个',fir)
   yield 2

t = test()
re = t.__next__()  #开始启动生成器函数,re表示yield 后的值,该处代表 1
print(re)          #>>> 1
res = t.send(1)       #继续调用生成器函数,并将1传值给fir;res表示后面的yield返回值,该该处代表2
print(res)       #>>> 2
'''
# 如果模拟生产包子和吃包子,可以如下:

import time
def eat(name):
   print('我是【%s】,我要开始吃包子了~'%name)
   while True:
      baozi = yield
      time.sleep(1)
      print('【%s】很开心的把%s吃掉了~'%(name,baozi))

def product():
   eat_list = ['A','B','C']
   for i in range(len(eat_list)):
      c = eat(eat_list[i])
      c.__next__()
      for b in range(5):
         c.send('包子%d'%b)
product()

你可能感兴趣的:(Python基础-----生成器函数(生产者消费者模型))