import time #使用装饰器测试协程的运行时间 def func(fun): def wapper(*args,**kwargs): start=time.time() fun(*args,**kwargs) end=time.time() print(end-start) return wapper #生产者消费者模式 def consumer(): r = '' while True: n = yield r if not n: return print('[CONSUMER] Consuming %s...' % n) r = '200 OK' @func def produce(c): c.send(None) n = 0 while n < 5: n = n + 1 print('[PRODUCER] Producing %s...' % n) r = c.send(n) print('[PRODUCER] Consumer return: %s' % r) c.close() c = consumer() produce(c)
协程不是多线程的一种,它只是在一个线程内切换不同的函数去执行,这样就可以节省线程切换的时间,是程序执行效率大大提高。