from algorithm import algorithm import json import ray @ray.remote class variance(algorithm): def __init__(self): self.config_dict_ = None self.config_ = None self.variance_number_ = 10 self.present_number_ = 0 self.window_1_ = [] self.sum = 0 self.average = 0 self.variance = 0 self.variance_sum = 0 def set_config(self, config): self.config_ = config self.config_dict_ = json.loads(self.config_) self.variance_number_ = self.config_dict_["VARIANCE_NUMBER"] def config(self): return self.config_ def eval(self, value): self.present_number_ = len(self.window_1_) if self.present_number_ < self.variance_number_: self.window_1_.append(value) self.sum = 0 for i in self.window_1_: self.sum = self.sum + i self.average = self.sum / len(self.window_1_) self.variance_sum = 0 for i in self.window_1_: self.variance_sum = self.variance_sum + (i-self.average)*(i-self.average) self.variance = self.variance_sum / len(self.window_1_) return self.variance else: self.sum = 0 del self.window_1_[0] self.window_1_.append(value) for i in self.window_1_: self.sum = self.sum + i self.average = self.sum / len(self.window_1_) self.variance_sum = 0 for i in self.window_1_: self.variance_sum = self.variance_sum + (i-self.average)*(i-self.average) self.variance = self.variance_sum / len(self.window_1_) return self.variance