sharedbox
sharedbox lets Python processes on one machine share data in shared
memory, without a server and without pickling. It gives you two things to
share:
- a box, one record that every process reads and writes, as if they all held the same dataclass;
- a stream, a flow of typed items that one process sends and each reader receives once.
You declare the fields once, and every process that opens the box or the stream works on the same bytes in shared memory, so nothing passes through a pipe or a socket between the processes. That fits wherever separate processes need the same data at once: web workers sharing state with a dashboard, a GUI and the backend process that does its work, the stages of a data pipeline, the state of a game or a simulation, or lab instruments and the programs that show them.
Installation
sharedbox needs CPython 3.11 or newer on Windows x64 or Linux x86_64. PyPI
has compiled wheels, so you don't need a compiler:
pip install sharedbox
or, in a project that uv manages:
uv add sharedbox
Quick start
import multiprocessing as mp
from typing import Annotated
from sharedbox import Capacity, SharedBox
class Mailbox(SharedBox):
letters: int
flag_up: bool
owner: Annotated[str, Capacity(32)]
def deliver() -> None:
mailbox = Mailbox.attach() # finds the box by its class
mailbox.letters = 1
mailbox.close()
if __name__ == "__main__":
with Mailbox(0, False, "Ada") as mailbox:
mailbox.events.letters.connect(lambda new, old: print(old, "->", new))
carrier = mp.Process(target=deliver)
carrier.start()
carrier.join() # prints: 0 -> 1
Mailbox.unlink()
The carrier process finds the box by its class alone, and the parent prints the change as soon as the carrier makes it.
Documentation
The documentation site starts with three tutorials, then has how-to guides, among them sending items through a stream, explanations of how a box works, and the API reference. C and C++ code can use a box too, either handed over from Python or opened by name; the C and C++ guides show how.
Development
To change sharedbox itself you need git, uv, CMake 3.30 or newer and a
C++20 compiler (MSVC or GCC):
git clone https://github.com/jacopoabramo/sharedbox.git
cd sharedbox
uv sync --dev
uv run pytest
How to set up a development environment has the details.
License
Licensed under Apache 2.0
Metadata
Release files for sharedbox 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| sharedbox-0.6.0.tar.gz | 600.0 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| sharedbox-0.6.0-cp314-cp314t-win_amd64.whl | CPython 3.14 | CPython 3.14 free-threading | Windows x86-64 | Details |
| sharedbox-0.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux musl 1.2+ x86-64 | Details |
| sharedbox-0.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| sharedbox-0.6.0-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| sharedbox-0.6.0-cp312-abi3-musllinux_1_2_x86_64.whl | CPython 3.12 | abi3 | Linux musl 1.2+ x86-64 | Details |
| sharedbox-0.6.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| sharedbox-0.6.0-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| sharedbox-0.6.0-cp311-cp311-musllinux_1_2_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux musl 1.2+ x86-64 | Details |
| sharedbox-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
Total release size: 5.2 MB
Security for sharedbox 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 10 files in this release have been uploaded with provenance metadata.
Attestation for sharedbox-0.6.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.