Skip to content

Instantly share code, notes, and snippets.

@ssbozy
Created December 1, 2017 15:18
Show Gist options
  • Save ssbozy/ffd54406d42e80c22cb68ce87bfb7ceb to your computer and use it in GitHub Desktop.
Save ssbozy/ffd54406d42e80c22cb68ce87bfb7ceb to your computer and use it in GitHub Desktop.
Circular Buffer
class CircularBuffer(object):
def __init__(self, buffersize):
self.buffer = []
self.buffersize = buffersize
self.capacity = len(self.buffer)
def __repr__(self):
return '<CircularBuffer({0})>'.format(self.buffer)
def add_to_buffer(self, item):
''' Add item to buffer towards the end.
if buffer crosses buffersize, the first element is dropped
'''
if self.capacity >= self.buffersize:
del self.buffer[0]
self.buffer.append(item)
self.capacity = len(self.buffer)
else:
self.buffer.append(item)
self.capacity = len(self.buffer)
def main():
cb = CircularBuffer(10)
for i in range(20):
cb.add_to_buffer(i)
print cb
return
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment