Tôi đang phát triển một khách hàng sẽ nhận dữ liệu [EEG] trên tcp và ghi nó vào bộ đệm vòng. Tôi nghĩ rằng nó có thể rất thuận tiện để có bộ đệm như một ctypes hoặc mảng numpy bởi vì nó có thể tạo ra một 'xem' numpy đến bất kỳ vị trí của bộ đệm như vậy và đọc/ghi/xử lý dữ liệu mà không cần bất kỳ hoạt động sao chép. Hoặc là một ý tưởng tồi nói chung?bộ đệm vòng với các cụm/sê-ri
Tuy nhiên, tôi không thấy cách triển khai bộ đệm tròn có kích thước cố định theo cách này. Giả sử tôi đã tạo ra một đối tượng đệm tiếp giáp trong bộ nhớ. Cách tốt nhất để ghi dữ liệu khi kết thúc bộ đệm là gì?
Một cách có thể là bắt đầu ghi đè các byte (đã cũ) từ đầu khi con trỏ ghi đến phần cuối của mảng đệm. Tuy nhiên, gần ranh giới, khung nhìn gọn gàng của một số đoạn (để xử lý) không thể được tạo ra (hoặc có thể?) Trong trường hợp này, bởi vì một số vẫn có thể nằm ở cuối mảng đệm trong khi một phần khác đã có trong bắt đầu của nó. Tôi đã đọc không thể tạo ra những lát tròn như vậy. Làm thế nào để giải quyết điều này?
UPD: Cảm ơn mọi người vì câu trả lời. Trong trường hợp ai đó cũng phải đối mặt với cùng một vấn đề, here của mã cuối cùng tôi đã có.
Tôi đã viết gói ['numpy_ringbuffer'] (https://pypi.python.org/pypi/numpy_ringbuffer) để giải quyết vấn đề này, cung cấp giao diện giống như 'deque' cho bộ đệm cơ bản – Eric