1 from greenlet import greenlet 2 3 def test1(): 4 print(12) 5 g2.switch()#切换到协程g2执行,保存执行状态 6 print(23) 7 g2.switch()#切换到协程g2执行,保存执行状态 8 print(34) 9 def test2(): 10 print(22) 11 g1.switch()#切换到协程g1执行,保存执行状态 12 print(33) 13 g1.switch()#切换到协程g1执行,并保存执行状态 14 print(44) 15 16 17 18 19 g1 = greenlet(test1)#启动协程g1 20 g2 = greenlet(test2)#启动协程g2 21 g1.switch()
总结:个人认为协程就是使用的生成器状态,或者说类似于生成器状态,而执行就是使用的.__next__命令内部实现。并实现状态保存。因为是在同一进程里,所以不需要加锁。
本博2017年4月开始自学,到20年2月已自学3年,不仅仅python,目前已经全栈WEB开发,全自动A股交易,深度学习也初步涉猎,这句话改于2020年2月16日。计划学习10年,40岁学成精英,如若不到,继续学习,终身保持学习状态。30岁之前看不惯社会天天抱怨,30岁突然醒悟,错全在自己身上,跟社会没有任何关系,故开始随时保持学习状态,向梦想冲刺。