协程操作是单线程进行的,协程通过自拟寄存器记录上下文和栈,实现单线程的高并发
与多线程相比,协程的特点:
1.必须在只有一个单线程里实现并发
2.修改共享数据不需加锁
3.用户程序里自己保存多个控制流的上下文栈
4.一个协程遇到I/O操作自动切换到其它协程
1.通过yield实现简单的生产者消费者模型,拟协程
# -*- coding:utf-8 -*- # Author: Wongdu import time # 消费者,通过yield把该函数变成一个生成器 def consumer(name): print("%s 准备好开始吃蛋糕啦~~~" % name) while True: # 当yield被赋值时,该函数才继续往下执行代码 dangao = yield print("[%s] 被%s吃啦~~~" % (dangao, name)) time.sleep(1) # 生产者 def producer(p_name): # 通过生成器的__next__()方法把生成器执行到yield的位置 c1.__next__() c2.__next__() n = 0 while True: dangao = '蛋糕%s' % n print("