Open juandamonsalve opened 7 months ago
from ucollections import deque
class CircularBuffer(object): ''' Very simple implementation of a circular buffer based on deque ''' def init(self, max_size): self.data = deque((), max_size, True) self.max_size = max_size
def __len__(self):
return len(self.data)
def is_empty(self):
return not bool(self.data)
def append(self, item):
try:
self.data.append(item)
except IndexError:
# deque full, popping 1st item out
self.data.popleft()
self.data.append(item)
def pop(self):
return self.data.popleft()
def clear(self):
self.data = deque((), self.max_size, True)
def pop_head(self):
buffer_size = len(self.data)
temp = self.data
if buffer_size == 1:
pass
elif buffer_size > 1:
self.data.clear()
for x in range(buffer_size - 1):
self.data = temp.popleft()
else:
return 0
return temp.popleft()
El programa implementa un buffer circular utilizando la clase Circular Buffer. Este buffer se utiliza para almacenar datos de respiración, y su tamaño máximo está definido por el parámetro max_size proporcionado al iniciar la clase. La lógica del buffer circular se basa en la estructura deque de Micro Python (ucollections.deque). Cuando se añaden nuevos elementos al buffer mediante el método append, el programa maneja la sobrecarga del buffer eliminando el elemento más antiguo. El método pop elimina y devuelve el elemento más antiguo del buffer, y el método clear reinicia el buffer vaciándose.