如何使用需要很多秒的函数更新 "realtime" 中的变量到 return 一个值

How to update a variable in "realtime" using functions which take many seconds to return a value

实时更新电流均值等变量应该使用什么逻辑?

例如,在下面的脚本中,obs_mean() 通过侦听传入的传感器数据生成平均值。函数 listen_to_observations() 是一个示例函数,其行为类似于真实传感器数据函数。

如何使用 obs_mean(5) 每隔 second/realtime 更新值 current_mean(这需要 5 秒的数据并需要 5 秒到 return 一个值)?

import numpy as np
import random
import time

current_mean = None

def listen_to_observations():
    #listen to a stream of observations
    time.sleep(1)
    yield random.random()

def obs_mean(seconds):
    array = [listen_to_observations().next() for i in range(seconds)]
    return np.array(array).mean()

逻辑是怎样的?我正在使用 Python 3.5.

您可以将数组行分解为单独的语句,并在每次观察后计算平均值:

import numpy as np
import random
import time

current_mean = None

def listen_to_observations():
    #listen to a stream of observations
    time.sleep(1)
    yield random.random()

def obs_mean(seconds):
    array = []
    for i in range(seconds):    
        array.append(listen_to_observations().next())
        current_mean = np.array(array).mean()
        print('current_mean = {}'.format(current_mean))
    return current_mean

if __name__ == '__main__':
    obs_mean(5)

我的输出:

current_mean = 0.193142347659
current_mean = 0.212120380098
current_mean = 0.355774933848
current_mean = 0.362840457341
current_mean = 0.312662693142