python 使用协程计算移动平均值

下面我们用协程来实现平均值的计算,区别之前的闭包。
在这里插入图片描述
这个无限循环表明,只要调用方不断把值发给这个协程,它就会一直接收值,然后生成 结果。仅当调用方在协程上调用 .close() 方法,或者没有对协程的引用而被垃圾回收 程序回收时,这个协程才会终止。

这里的 yield 表达式用于暂停执行协程,把结果发给调用方;还用于接收调用方后面发 给协程的值,恢复无限循环。

使用协程的好处是,totalcount 声明为局部变量即可,无需使用实例属性或闭包在多 次调用之间保持上下文。
在这里插入图片描述
1、创建协程对象。
2、 调用 next 函数,预激协程。
3、计算移动平均值:多次调用 .send(...) 方法,产出当前的平均值。

调用 next(coro_avg) 函数后,协程会向前执行到 yield 表 达式,产出 average 变量的初始值——None,因此不会出现在控制台中。此时,协程在 yield 表达式处暂停,等到调用方发送值。coro_avg.send(10) 那一行发送一个值,激活 协程,把发送的值赋给 term,并更新 total、countaverage 三个变量的值,然后开始 while 循环的下一次迭代,产出 average 变量的值,等待下一次为 term 变量赋值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值