Array? Please help.

Diez B. Roggisch deets at nospam.web.de
Sun May 28 22:56:29 CEST 2006


George Sakkis schrieb:
> Diez B. Roggisch wrote:
>> Dr. Pastor schrieb:
>>> 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.
>>> (A pointer will point to the next byte to write to.)
>>> What would be the Pythonic way to do the above?
>>> Thanks for any guidance.
>> Use a list, use append and slicing on it:
>>
>>
>> max_size = 10
>> buffer = []
>>
>> for i in xrange(100):
>>      buffer.append(i)
>>      buffer[:] = buffer[-max_size:]
>>      print buffer
>>
>>
>> Diez
> 
> You're not serious about this, are you ?

Tell me why I shouldn't. I presumed he's after a ringbuffer. Ok, the 
above lacks a way to determine the amount of bytes added since the last 
read. Add a counter if you want. And proper synchronization in case of a 
multithreaded environment. But as the OP was sketchy about what he 
actually needs, I thought that would at least give him a start.

Maybe I grossly misunderstood his request. But I didn't see your better 
implementation so far. So - enlighten me.


Diez



More information about the Python-list mailing list