协程实现简单的生产者消费者
#!/usr/bin/python2 # coding=utf-8 def consumer(): print('--4、开始执行生成器代码--') response = None while True: print('--5、yield,中断,保存上下文--') n = yield response # 4、yield,中断,保存上下文 print('--8、获取上下文,继续往下执行--') if not n: return print("[Consumer]: consuming {} ..".format(n)) response = "OK" def produce(c): print("--3、启动生成器,开始执行生成器consumer--") c.send(None) # 3、启动生成器,开始执行生成器consumer print("--6、继续往下执行--") n = 0 while n < 5: n += 1 print("[Producer]: producing {} ..".format(n)) print("--7、第{}次唤醒生成器,从yield位置继续往下执行!--".format(n + 1)) r = c.send(n) # 第二次唤醒生成器 print("--9、从第8步往下--") print("[Producer]: consumer return {} ..".format(r)) # c.close() if __name__ == "__main__": c = consumer() # 1、定义生成器,consumer并不执行 produce(c) # 2、运行produce函数
# 个人理解:
1. 使用生成器之前需要启动生成器,通过next()或者c.send(None)来启动
# isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号