A multiprocessing lock implemented using shared memory and atomics.
Project description
Shared Memory Lock
A multiprocessing lock implemented using shared memory and atomics.
Installation
uv pip install -e .
Usage
from shared_memory_lock import SharedMemoryLock
# Create a lock (first process)
lock = SharedMemoryLock(name="my_lock", create=True, run_id="app1")
# Connect to the same lock (other processes)
lock = SharedMemoryLock(name="my_lock", create=False, run_id="app1")
# Use as context manager
with lock:
# Critical section - only one process can be here
print("Doing important work...")
# Or manual acquire/release
if lock.acquire(blocking=False):
try:
# Got the lock
print("Acquired lock!")
finally:
lock.release()
else:
print("Could not acquire lock")
# Clean up when done
lock.close()
lock.unlink() # Only call from one process
Features
- Cross-process synchronization: Works across multiple processes
- Atomic operations: Uses real atomic compare-and-swap for mutual exclusion
- Picklable: Can be passed to multiprocessing.Process
- Context manager: Supports
withstatements - Non-blocking: Optional non-blocking acquire with timeout
Development
# Install dependencies
uv sync
# Run tests
uv run --python 3.13.7 pytest
# Run tests with coverage
uv run --python 3.13.7 pytest --cov=shared_memory_lock
License
MIT
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
shared_memory_lock-0.1.4.tar.gz
(12.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters