Door is a comprehensive python library for synchronization proxies. Door's reliability has been established through static type checking, extensive doctests, and unit tests, achieving 93% code coverage.
- Share objects across processes without queues or pipes.
- Synchronization proxies to enforce sound synchronous data access.
- Supported scenarios:
- Threading;
- Multiprocessing;
- Asynchronous programming.
- Supported scenarios:
- Shared lock (Readers-writer lock) implementations.
- Shared condition variable (Readers-writer condition variables) implementations.
pip install door
Below shows a sample usage of Door.
>>> from dataclasses import dataclass
>>> from multiprocessing import Process
>>> from door.multiprocessing2 import Handle, SAcquirableDoor
>>> @dataclass
... class Resource:
... key: str = 'value'
...
>>> handle = Handle(Resource())
>>> handle.get()
Resource(key='value')
>>> door = SAcquirableDoor(handle)
>>> def func(door):
... with door.write() as proxy:
... proxy.key = 'VALUE'
...
>>> process = Process(target=func, args=(door,))
>>> process.start()
>>> process.join()
>>> handle.get()
Resource(key='VALUE')
>>> handle.unlink()
Door has extensive test coverage, passes mypy static type checking with strict parameter, and has been validated through extensive use in real-life scenarios.
Contributions are welcome! Please read our Contributing Guide for more information.
Door is distributed under the MIT license.