LoginSignup
4
2

More than 5 years have passed since last update.

コルーチンで平均値のリアルタイム計算

Posted at
  • コルーチンは停止・再開することができる関数
  • yieldで停止
  • yieldの戻り値に値をsendして再開
average.py
#!/usr/bin/python                                                                                                                                                                                                  

def average():
    total = 0.0
    count = 0.0
    average = 0.0
    while True:
        # コルーチンのポイント
        # - yieldでaverageを生成して関数が停止
        # - sendから値を受け取るとそれをvalueに代入して関数が再開
        value = yield average 
        total += value
        count += 1.0
        average = total/count

avg = average()
avg.next()
print avg.send(10.0)
print avg.send(20.0)
print avg.send(30.0)
  • 結果
10.0
15.0
20.0
4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2