第97p,Python中实现协程的4种方式(中)
共 1073字,需浏览 3分钟
·
2021-05-02 01:00
星标公众号,方便及时阅读新知识 推荐给朋友,和朋友一起学习知识 |
大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第97篇文章,第三阶段的课程:Python进阶知识:简单讲讲在PYthon中实现协程异步的4种方式(中篇)。
1、greenlet手动实现协程
首先,greenlet是一个模块,我们需要先pip install greenlet安装;
其次,greenlet是通用模块,在Python2和Python3中都能使用;
请看上图,程序的执行顺序是:
A、遇到函数与赋值直接跳过,程序执行到了gr1.switch()这个语句时,会去执行fun1函数内语句;
B、在fun1函数内执行到gr2.switch()语句是会跳到fun2函数中执行;
C、重点在于:在fun2函数中执行到gr1.switch()这个语句的时候,程序跳到fun1函数中执行;但是不会重新执行整个fun1函数,程序会在刚才执行到的位置继续往下执行;
2、、yield关键字手动实现协程
关于yield关键字的作用,在前面函数相关的文章中有简单提过;yield关键字最核心的作用是能够让程序执行函数体(或类)代码时停顿,不会一溜烟到底直接执行return;
上图中代码的原理与greenlet类似,这里是执行到yield关键时停顿或跳转到其他任务执行;程序的执行顺序相当于执行到yield就切换到另外的任务上执行,等另外的任务执行完成以后,再切换到原来的任务中;但是这个切换是手动的。
不管是yield关键字还是greenlet模块实现协程的方式都是需要我们在代码中手动添加,手动切换;执行效率没有asyncio与async+await关键字的这两种方式高;
以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。
感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!
本文由杨数Tos原创,欢迎关注,带你一起长知识。
推 荐 内 容