Skip to main content

Provides tools for multiprocessing.

Project description

procnexus

Provides tools for multiprocessing.

procnexus offers a tiny, explicit interface for collecting function calls and executing them concurrently with Python's multiprocessing.Pool.

🛠️ Installation

$ pip install procnexus

✨ Features

  • Simple task submission (submit) API.
  • Batch execution with process pools.
  • Asynchronous execution with start(), join(), and get()
  • Ordered results (same order as submitted tasks).
  • Lightweight wrapper around the standard library.

🚀 Quick Start

from procnexus import nexus


def add(a: int, b: int) -> int:
    return a + b


job = nexus(add, processes=4)
job.submit(1, 2)
job.submit(10, 5)
job.submit(-1, 8)

results = job.run()
print(results)  # [3, 15, 7]

# Or start the work asynchronously and collect it later.
job = nexus(add, processes=4)
job.submit(1, 2)
job.submit(10, 5)
job.start()
# Do other work here, and optionally submit more tasks before joining.
job.submit(-1, 8)
job.join()
results = job.get()
print(results)  # [3, 15, 7]

🧩 API

nexus(func, processes=-1) -> ProcNexus

Create a ProcNexus runner from a callable.

  • func: target function for each task.
  • processes: worker-process setting.
    • < 0: use os.cpu_count().
    • = 0: do not create a process pool; run with normal in-process mapping.
    • > 0: pass directly to multiprocessing.Pool.

ProcNexus.submit(*args, **kwargs) -> None

Queue one invocation of func. Before start(), the invocation is stored for later execution. After start() and before join(), the invocation is scheduled immediately and is included in the ordered get() result.

ProcNexus.start() -> None

Start executing all queued tasks. With processes=0, this computes immediately in the current process; otherwise it starts a process pool asynchronously.

ProcNexus.join() -> None

Wait for a previously started run to finish. Results are stored on the runner instead of being returned directly.

ProcNexus.get() -> list

Return results in submission order, including tasks submitted after start(). If the runner is still active, get() waits for it to finish before returning.

ProcNexus.run() -> list

Execute all queued tasks in parallel and return results in submission order. This is equivalent to calling start(), join(), and then get().

📝 Notes

  • The submitted callable should be picklable by multiprocessing.
  • Arguments must also be serializable for inter-process communication.
  • Exceptions from worker processes propagate when calling join(), get(), or run().

🔗 See Also

Github repository

PyPI project

⚖️ License

This project falls under the BSD 3-Clause License.

🕒 History

v0.0.1

  • Added asynchronous execution with start(), join(), and get(), while keeping run() as the one-shot convenience API.
  • Allowed submit() calls after start() and before join(), preserving submission-order results across queued and late-submitted tasks.
  • Expanded README/API documentation and added unit coverage for async lifecycle, ordered results, and invalid state transitions.

v0.0.0

  • Initial release.

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

procnexus-0.0.1.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

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

procnexus-0.0.1-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file procnexus-0.0.1.tar.gz.

File metadata

  • Download URL: procnexus-0.0.1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for procnexus-0.0.1.tar.gz
Algorithm Hash digest
SHA256 f9b2ea54ae4b8caf19c2ea1694143b506e8338a20ccfe663a8432b789f0fbf9e
MD5 12832c3babb1c3603ab3a597a4aeda3b
BLAKE2b-256 ad33b917daddc6bc8135f61e451023ab8cf90372a621bd2d401705fa9275f80f

See more details on using hashes here.

File details

Details for the file procnexus-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: procnexus-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for procnexus-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 364f8f6880794d488fee81643bcb729c185941cbc4733b7c5440ba520d69473f
MD5 017ced8e5a822fecf473597d128a9393
BLAKE2b-256 23cba5b35e9db6a9c815f4907e90659521e41e3e575f5764906a1e433956f26e

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