Sto sviluppando un client che riceverà i dati [EEG] su tcp e lo scriverà sul ring buffer. Ho pensato che possa essere molto comodo avere il buffer come un array ctypes o numpy perché è possibile creare una "vista" numpy in qualsiasi posizione di tale buffer e leggere/scrivere/elaborare i dati senza operazioni di copia. O è una cattiva idea in generale?buffer ad anello con numpy/ctypes
Tuttavia, non vedo come implementare un buffer circolare di dimensioni fisse in questo modo. Supponiamo di aver creato un oggetto buffer che è contiguo in memoria. Qual è il modo migliore per scrivere i dati quando viene raggiunta la fine del buffer?
Un modo possibile è iniziare a sovrascrivere i byte (già vecchi) dall'inizio quando il puntatore di scrittura raggiunge la fine dell'array di buffer. Vicino ai confini, tuttavia, la vista numpy di alcuni blocchi (per l'elaborazione) non può essere creata (o può?) In questo caso, perché alcuni di essi possono ancora essere posizionati alla fine del buffer array mentre un altro già in il suo inizio. Ho letto che è impossibile creare fette così circolari. Come risolvere questo?
UPD: Grazie a tutti per le risposte. Nel caso in cui qualcuno si trovi di fronte allo stesso problema, lo here è il codice finale che ho.
Ho scritto il [ 'pacchetto numpy_ringbuffer'] (https://pypi.python.org/pypi/numpy_ringbuffer) per risolvere questo problema, che fornisce un'interfaccia' deque' simile a un buffer sottostante – Eric