#!/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基础-----生成器函数(生产者消费者模型)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 多线程实现 多线程实现生产者消费者模型的逻辑十分简单,生产者与消费者之间通过队列来进行通讯,所以生产者不用等待消费...