python 协程二

1 使用协程实现移动均值函数

>>> from inspect import getgeneratorstate as gs
>>> def mean_coroutine():
...   total = 0
...   count = 0
...   average = None
...   while True:
...     val = yield average
...     total += val
...     count += 1
...     average = total / count
... 
>>> avg_cor=mean_coroutine()
>>> gs(avg_cor)
'GEN_CREATED' 
>>> next(avg_cor)
>>> avg_cor.send(10)
10.0
>>> avg_cor.send(20)
15.0
>>> avg_cor.send(30)
20.0

2 使用装饰器实现一个预激的协程

>>> def decorator(func):
...   def primer(*args,**kwarg):
...     cor = func(*args,**kwarg)
...     next(cor)
...     return cor
...   return primer
... 
>>> @decorator
... def mean_coroutine():
...   total = 0
...   count = 0
...   average = None
...   while True:
...     val = yield average
...     total += val
...     count += 1
...     average = total / count
... 
>>> from inspect import getgeneratorstate as gs
>>> avg_cor = mean_coroutine()
>>> gs(avg_cor)
'GEN_SUSPENDED'
>>> avg_cor.send(1)
1.0
>>> avg_cor.send(3)
2.0
>>> avg_cor.send(5)
3.0

https://blog.youkuaiyun.com/s695811494/article/details/112097536

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值