Estoy desarrollando un cliente que recibirá los datos [EEG] a través de tcp y los escribirá en el buffer de anillo. Pensé que podría ser muy conveniente tener el búfer como una matriz ctypes o numpy porque es posible crear una "vista" numpy en cualquier ubicación de dicho búfer y leer/escribir/procesar los datos sin ninguna operación de copia. ¿O es una mala idea en general?buffer de anillo con numpy/ctypes
Sin embargo, no veo cómo implementar un búfer circular de un tamaño fijo de esta manera. Supongamos que he creado un objeto buffer que está contiguo en la memoria. ¿Cuál es la mejor manera de escribir los datos cuando se llega al final del búfer?
Una posible forma es comenzar a sobrescribir los bytes (ya antiguos) desde el inicio cuando el puntero de escritura llega al final de la matriz de almacenamiento intermedio. Sin embargo, cerca de los límites, la vista numpy de algún fragmento (para el procesamiento) no se puede crear (¿o puede ser así?) En este caso, porque parte de él puede estar ubicado al final de la matriz de almacenamiento intermedio mientras que otro ya está su principio. He leído que es imposible crear tales sectores circulares. ¿Cómo resolver esto?
UPD: Gracias a todos por las respuestas. En caso de que alguien también tenga el mismo problema, here es el código final que tengo.
He escrito el [ 'paquete numpy_ringbuffer'] (https://pypi.python.org/pypi/numpy_ringbuffer) para resolver este problema, lo que proporciona una interfaz' deque' parecido a un búfer subyacente – Eric