第97p,Python中实现协程的4种方式(中)

共 1073字,需浏览 3分钟

 ·

2021-05-02 01:00


星标公众号方便及时阅读新知识

推荐给朋友和朋友一起学习知识

领取福利


大家好,我是杨数Tos,这是《从基础到大神》系列课程的第97篇文章,第三阶段的课程Python进阶知识:简单讲讲在PYthon中实现协程异步的4种方式(中篇)。


 

1、greenlet手动实现协程

首先,greenlet是一个模块,我们需要先pip install greenlet安装;

其次,greenlet是通用模块,在Python2Python3中都能使用;

 

请看上图,程序的执行顺序是:

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模块实现协程的方式都是需要我们在代码中手动添加,手动切换;执行效率没有asyncioasync+await关键字的这两种方式高;

 

 

以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。

感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!

本文由杨数Tos原创,欢迎关注,带你一起长知识。



    推   荐   内   容    


量化交易公开课

项目源代码分享






浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报