如何使用需要很多秒的函数更新 "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
实时更新电流均值等变量应该使用什么逻辑?
例如,在下面的脚本中,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