Dr. Pastor wrote:
I need a row of 127 bytes that I will use as a
circular buffer. Into the bytes (at unspecified times)
a mark (0<mark<128) will be written, one after the other.
After some time the "buffer" will contain the last 127 marks
and a pointer will point the next "usable" byte.
What would be the Pythonic way to do the above?
Thanks for any guidance.
This will do the trick:
import itertools as it
from array import array
class CircularBuffer(object):
def __init__(self, size=128):
self._buffer = array('c', it.repeat(chr(0),size))
self._next = 0
def putmark(self, mark):
self._buffer[self._next] = mark
self._next = (self._next+1) % len(self._buffer)
def __str__(self):
return '%s(%r)' % (self.__class__.__name__,
self._buffer.tostring())
if __name__ == '__main__':
import string
b = CircularBuffer()
for c in string.letters * 10:
b.putmark(c)
print b
HTH,
George