Skip to main content

Package for communication with shared memory using double buffer

Project description

DoubleBufferedSharedMemoryManager is a Python class designed to manage double-buffered shared memory for concurrent read/write operations, particularly suited for handling video frames stored as NumPy ndarrays.

Features

  • Double-Buffered Memory: Allows one buffer to be read while the other is being written to, minimizing read-write conflicts.

  • Thread-Safe Access: Utilizes reader-writer locks to allow multiple readers and a single writer.

  • Dynamic Memory Management: Dynamically creates or connects to shared memory segments based on the provided base name.

  • Customizable Data Handling: Supports specifying the shape and data type of the NumPy ndarray.

Requirements

  • Python 3.x

  • NumPy

  • multiprocessing

  • readerwriterlock

  • colorlog (for enhanced logging with color)

Installation

Ensure you have the required libraries:

pip install numpy readerwriterlock colorlog

Usage

Initialization

Import and initialize the manager:

from double_buffered_shared_memory import DoubleBufferedSharedMemoryManager
import numpy as np

# Initialize with default parameters
manager = DoubleBufferedSharedMemoryManager('image_buffer')

# Initialize with custom shape and dtype
manager = DoubleBufferedSharedMemoryManager('image_buffer', shape=(576, 720, 3), dtype=np.uint16)

Writing to Shared Memory

# Create a random HD image
img = np.random.randint(255, size=(1080, 1920, 3), dtype=np.uint8)

# Write to the active buffer
manager[0] = img

0 is a convention, you can use any number, but for clarity use 0

Reading from Shared Memory

# Switch the active buffer
manager.__switch()

# Read from the non-active buffer
img_copy = manager[0]

0 is a convention, you can use any number, but for clarity use 0

Cleanup

It’s important to clean up shared memory resources when they’re no longer needed:

manager.cleanup()

Using with Context Manager

The class supports context management protocol for automatic resource management:

with DoubleBufferedSharedMemoryManager('image_buffer') as manager:
    # Your code to use the manager
    pass

Logging

The class utilizes colorlog for enhanced logging. Log messages will vary in color based on the log level to provide a clearer and more intuitive understanding of the operations and events.

Contributing

Contributions, issues, and feature requests are welcome. Feel free to check issues page if you want to contribute.

Author

Massimo Ghiani m.ghiani@gmail.com

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

double-buffer-shared-memory-manager-1.0.3.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file double-buffer-shared-memory-manager-1.0.3.tar.gz.

File metadata

File hashes

Hashes for double-buffer-shared-memory-manager-1.0.3.tar.gz
Algorithm Hash digest
SHA256 b146cbf2cd8dc8d3f103b68a139ecb5bb59a0755052f44ac88b7b849d8b04e7f
MD5 9b0465cbe064fe5a898658091253563b
BLAKE2b-256 51634bcfc9a2d506b55765015a4c5bf982e4fcb1f8fe9cbaf86dc2d3bcb4d64d

See more details on using hashes here.

File details

Details for the file double_buffer_shared_memory_manager-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for double_buffer_shared_memory_manager-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5e64bd2a2c381af21484d0f24657303f32f3c2895b030695f915b10ee2857716
MD5 4aedb066da4a788993b677c66faa3158
BLAKE2b-256 1d7977a3d31797ddcd6f69145b07e58fb8d0989152ffac5d3343d958a7e8f25f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page