Skip to main content

shmarray

NOTE: If you are using Python 3.8, please turn to multiprocessing.shared_memory instead.


shmarray is a shared numpy-array implementation utilizing multiprocessing.sharedctypes. It is a quite useful small library created of David Baddeley. I found it at https://github.com/lucastheis/parallel/blob/master/shmarray.py

Despite its usefulness, it not only does not come with a pip-installable package, but also contains disrepaired bugs.

This repo is created as a remedy.

Installation

pip install shmarray

Usage

test.py

from multiprocessing import Process
import time

import shmarray

def worker(data):
    while True:
        data += 1
        time.sleep(1)


def monitor(data):
    while True:
        print(data)
        time.sleep(0.5)

data = shmarray.zeros(10)

procs = [
    Process(target=worker, args=(data, )),
    Process(target=monitor, args=(data, )),
]


for p in procs:
    p.start()

for p in procs:
    p.join()

Result:

$ python3 test.py
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[3. 3. 3. 3. 3. 3. 3. 3. 3. 3.]
[3. 3. 3. 3. 3. 3. 3. 3. 3. 3.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[5. 5. 5. 5. 5. 5. 5. 5. 5. 5.]
[5. 5. 5. 5. 5. 5. 5. 5. 5. 5.]
[6. 6. 6. 6. 6. 6. 6. 6. 6. 6.]
[6. 6. 6. 6. 6. 6. 6. 6. 6. 6.]
...

Under the hood

The code in shmarray.py is mostly the same as the original, I've only done a few things:

  1. fix a bug that did not pass dtype argument to downstream calls
  2. fix python version compatibility bugs
  3. reformat the code using black

Metadata

Release files for shmarray 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shmarray 0.0.3
File Size Uploaded
shmarray-0.0.3.tar.gz 4.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shmarray 0.0.3
File Interpreter ABI Platform
shmarray-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 9.6 kB

Release files / shmarray-0.0.3.tar.gz

Download URL shmarray-0.0.3.tar.gz
Size 4.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a9810682d778a6cb051a0e3efa0076dab55c3d7dc1e3cfb7c0712cf36f19d093
BLAKE2b-256 checksum
How to use checksums
8f3fd1c9152723d257e374aa8471457b854c931230f7fee33bbc3797cfda70df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.8.0 tqdm/4.31.1 CPython/3.7.4

Release files / shmarray-0.0.3-py3-none-any.whl

Download URL shmarray-0.0.3-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
17f22c295a44f76360437435efaa0828c158cad288c7268c51507fd4870f7919
BLAKE2b-256 checksum
How to use checksums
662deccccb50515acaf2c0ae840dcc1776184fe6b1319b2c5c57535b99dd6c9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.8.0 tqdm/4.31.1 CPython/3.7.4

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page