https://github.com/miili/ringnes
Overwriting ring buffer for Python with continuous memory map
https://github.com/miili/ringnes
circular-buffer python
Last synced: 5 months ago
JSON representation
Overwriting ring buffer for Python with continuous memory map
- Host: GitHub
- URL: https://github.com/miili/ringnes
- Owner: miili
- License: gpl-3.0
- Created: 2019-04-14T17:43:59.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-05-31T08:39:05.000Z (almost 7 years ago)
- Last Synced: 2025-02-09T14:45:25.221Z (about 1 year ago)
- Topics: circular-buffer, python
- Language: C
- Homepage:
- Size: 36.1 KB
- Stars: 4
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ringnes

_Overwriting ringbuffer for Python_
A simple overwriting ringbuffer for Python, providing a continous strip of virtual memory over the ring trough Python C-API using mmap black magic.
The `put` method is thread safe.
More from the ringnes brewery: https://ringnes.no/
# ToDo
A consumer `get` is not implemented at the moment. Please feel free to contribute!
# Example
```python
from ringnes import Ringbuffer
import numpy as num
# Capacity in bytes
cap = 4096 * 100
ring = Ringbuffer(capacity=cap)
data = num.arange(1002, dtype=num.int32)
for _ in range(20):
ring.put(memoryview(data))
receive = num.frombuffer(ring, dtype=num.int32)[::-1]
```
# Installation
Python development headers are required, that's it.
```sh
sudo apt-get install python3-dev
pip3 install git+https://github.com/miili/ringnes.git
```
# Resources
https://nbviewer.jupyter.org/url/jakevdp.github.com/downloads/notebooks/BufferProtocol.ipynb
https://lo.calho.st/quick-hacks/employing-black-magic-in-the-linux-page-table/
https://github.com/le1ca/toy-queue/