Skip to content

Instantly share code, notes, and snippets.

@EllieTheYeen
Created May 29, 2024 18:19
Show Gist options
  • Save EllieTheYeen/ef80d7af4bfd8ae3168b5ed729566d2b to your computer and use it in GitHub Desktop.
Save EllieTheYeen/ef80d7af4bfd8ae3168b5ed729566d2b to your computer and use it in GitHub Desktop.
Python ring buffer test
class RingBuffer:
full = False
readpos = 0
writepos = 0
def __init__(self, size=8):
self.size = size
self.buf = [0] * size
def take(self):
if self.readpos == self.writepos:
if self.full:
self.full = False
else:
return -1
past = self.readpos
self.readpos += 1
if self.readpos >= self.size:
self.readpos = 0
return self.buf[past]
def put(self, value):
if self.full: return False
self.writepos += 1
if self.writepos >= self.size:
self.writepos = 0
self.buf[self.writepos] = value
if self.readpos == self.writepos:
self.full = True
return True
ring = RingBuffer()
for a in range(10):
res = ring.put(a)
if res:
print(f"Successfully put {a} in ringbuffer")
else:
print(f"Unsuccessfully put {a} in ringbuffer")
for a in range(10):
res = ring.take()
if res != -1:
print(f"Successfully read {res} from ringbuffer")
else:
print(f"Unsuccessfully read from ringbuffer")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment