通过yield实现在单线程的情况下实现并发运算的效果
code
# Author:黑猴子的家
import time
def consumer(name):
print("%s 准备吃包子啦!" %name)
while True:
baozi = yield
print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
# c = consumer("ChenRonghua")
# c.__next__()
#__next__ 是 调用 yield , send 是 调用yield,同时给 yield 传值
# b1= "韭菜馅"
# c.send(b1)
# c.__next__()
def producer():
c = consumer('A')
c2 = consumer('B')
c.__next__()
c2.__next__()
print("老子开始准备做包子啦!")
for i in range(10):
time.sleep(1)
print("做了1个包子,分两半!")
c.send(i)
c2.send(i)
producer()
# 相当于有三个线程在运行
# 厨师和两个消费者,基本上都是同时运行
# 同志们,单线程下的并行效果就出来了
# 这就是异步io的雏形
# 这种现象我们不叫它单线程的并行,我们称之为协程
# 协程是比线程更小的一个单位,它集成在线程内
# 做了1个包子,分两半!
# 包子[9]来了,被[A]吃了!
# 包子[9]来了,被[B]吃了!