Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class RingBuffer():
- """
- I stole this (with permission)
- """
- def __init__(self, max_length, reactivity_factor=10):
- self.max_length = max_length
- self.index = 0
- self.rb = []
- self.intermed = []
- self.reactivity_factor = reactivity_factor
- def add(self, x):
- if len(self.rb) < self.max_length:
- self.rb.append(x)
- self.index += 1
- else:
- if len(self.intermed) < self.__stability():
- self.intermed.append(x)
- else:
- x = sum(self.intermed) / len(self.intermed)
- if self.index >= self.max_length:
- self.index = 0
- self.rb[self.index] = x
- self.index += 1
- self.intermed.clear()
- def __stability(self):
- if self.reactivity_factor > self.max_length:
- self.reactivity_factor = self.max_length
- return (int)(self.max_length / self.reactivity_factor)
- def clear(self):
- self.rb = []
- self.index = 0
- def avg(self):
- return sum(self.rb) / len(self.rb)
RAW Paste Data