使用生成器实现协程“并发”
from inspect import isgenerator import time,queue def consumer(name): print('---开始---') while True: new_baozi = yield #实例执行到这行会暂停。当producer的实例调用consumer生成器对象的send()方法,发送n过来后再往下执行。 print('\033[32;1m%s\033[0m正在吃第%s号包子'%(name,new_baozi)) time.sleep(1) def producer(): con.__next__() #调用生成器对象的__next__方法,进入consumer函数开始吃包子 con2.__next__() #调用生成器对象的__next__方法,进入consumer函数开始吃包子 n = 0 while n < 5: n+=1 print('\033[32;1m生产者\033[0m正在做第%s号包子'%n) con.send(n) #将包子编号发送到consumer con2.send(n) #将包子编号发送到consumer if __name__ == '__main__': con = consumer('消费者1') #生成生成器对象 con2 = consumer('消费者2') #生成生成器对象 p = producer() #调用producer函。这里的producer函数与consumer函数不同,producer不是生成器,consumer是生成器 print('#################################') print(isgenerator(con2)) print(isgenerator(con)) print(isgenerator(p))