Python-生成器迭代器编程练习

1、吃包子----生产者消费者模型(单线程一边发送,一边执行 ,伪并发)

吃包子
 1 import time
 2 def producer():
 3     ret=[]
 4     for i in range(100):
 5         time.sleep(0.1)
 6         ret.append('包子%s' %i)
 7     return ret
 8 
 9 def consumer(name):
10     print('我是[%s],我准备开始吃包子了' %name)
11     while True:
12         baozi=yield
13         time.sleep(1)
14         print('%s 很开心的把【%s】吃掉了' %(name,baozi))
15 
16 def producer():
17     c1=consumer('wupeiqi')
18     c2=consumer('yuanhao_SB')
19     c1.__next__()
20     c2.__next__()
21     for i in range(10):
22         time.sleep(1)     
23         c1.send('包子 %s' %i)  #发送的值,就是yield的返回值
24         c2.send('包子 %s' %i)
25 producer()
26 
27 
28 ------------------->
29 
30 我是[wupeiqi],我准备开始吃包子了
31 我是[yuanhao_SB],我准备开始吃包子了
32 wupeiqi 很开心的把【包子 0】吃掉了
33 yuanhao_SB 很开心的把【包子 0】吃掉了
34 wupeiqi 很开心的把【包子 1】吃掉了
35 yuanhao_SB 很开心的把【包子 1】吃掉了
36 wupeiqi 很开心的把【包子 2】吃掉了
37 yuanhao_SB 很开心的把【包子 2】吃掉了
38 wupeiqi 很开心的把【包子 3】吃掉了
39 yuanhao_SB 很开心的把【包子 3】吃掉了
40 wupeiqi 很开心的把【包子 4】吃掉了
41 yuanhao_SB 很开心的把【包子 4】吃掉了
42 wupeiqi 很开心的把【包子 5】吃掉了
43 yuanhao_SB 很开心的把【包子 5】吃掉了
44 wupeiqi 很开心的把【包子 6】吃掉了
45 yuanhao_SB 很开心的把【包子 6】吃掉了
46 wupeiqi 很开心的把【包子 7】吃掉了
47 yuanhao_SB 很开心的把【包子 7】吃掉了
48 wupeiqi 很开心的把【包子 8】吃掉了
49 yuanhao_SB 很开心的把【包子 8】吃掉了
50 wupeiqi 很开心的把【包子 9】吃掉了
51 yuanhao_SB 很开心的把【包子 9】吃掉了
52 
53 #运行结果省略部分.....

2

为什么要坚持,想一想当初!
原文地址:https://www.cnblogs.com/JerryZao/p/8634269.html