Skip to main content

mpmsub - Memory-Aware Multiprocessing Subprocess

A Python library for running subprocess commands with intelligent memory-aware scheduling and resource management.

Features

  • Memory-aware scheduling with automatic resource management
  • Pipeline support for chaining commands
  • Multiple job interfaces (dictionary, object-oriented, convenience functions)
  • Output redirection and progress tracking
  • Job profiling for memory optimization
  • Flexible API with multiple parameter names

Installation

pip install mpmsub

Quick Start

import mpmsub

# Create cluster and add jobs
p = mpmsub.cluster(cpu=4, memory="8G")

# Dictionary interface
p.jobs.append({"cmd": ["echo", "hello"], "p": 1, "m": "1G"})

# Object interface
p.jobs.append(mpmsub.Job(["python", "script.py"]).cpu(2).memory("2G"))

# Pipeline interface
p.jobs.append(mpmsub.pipeline([
    ["cat", "data.txt"],
    ["grep", "pattern"]
], cpu=1, memory="500M"))

# Run and analyze
results = p.run()
print(f"Completed: {results['jobs']['completed']}/{results['jobs']['total']}")

Performance

Run benchmarks to see performance benefits:

python examples/benchmark_demo.py
python benchmarks/run_all_benchmarks.py

Benefits include 1.2-2x speedup in memory-constrained scenarios and better system stability. See benchmarks/README.md for details.

Documentation

Complete documentation: https://nextgenusfs.github.io/mpmsub/

Includes tutorials, API reference, examples, and performance tips.

Key Features

Multiple Job Interfaces

# Dictionary interface
p.jobs.append({"cmd": ["echo", "hello"], "p": 1, "m": "1G"})

# Object interface with builder pattern
job = mpmsub.Job(["python", "script.py"]) \
    .cpu(2).memory("4G") \
    .stdout_to("output.txt")

# Pipeline interface
pipeline = mpmsub.pipeline([
    ["cat", "data.txt"],
    ["grep", "pattern"],
    ["sort"]
], cpu=1, memory="500M")

Job Profiling

# Measure actual memory usage
profile_results = p.profile()

# Use recommendations for optimized scheduling
p.jobs.append({"cmd": ["my_command"], "p": 1, "m": "150M"})

Memory Formats

  • "1G" - Gigabytes
  • "1024M" - Megabytes
  • 1024 - MB (integer)

Examples

See the examples/ directory for usage demonstrations and the documentation for comprehensive tutorials.

Development

# Clone and install in development mode
git clone https://github.com/nextgenusfs/mpmsub.git
cd mpmsub
pip install -e .[dev]

# Install pre-commit hooks (optional)
pre-commit install

CI/CD

The project uses GitHub Actions for:

  • Tests: Run on Python 3.8-3.12, Ubuntu/macOS
  • Code Quality: Linting, formatting, type checking
  • Publishing: Manual workflow for TestPyPI/PyPI, automatic PyPI on releases
  • Documentation: Auto-deploy to GitHub Pages

Requirements

  • Python 3.8+
  • psutil >= 5.8.0

License

MIT License

Metadata

Release files for mpmsub 2025.10.16

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

Source distribution (sdist)

Source distribution for mpmsub 2025.10.16
File Size Uploaded
mpmsub-2025.10.16.tar.gz 20.0 kB Details

Built distribution (wheel)

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

Total release size: 37.6 kB

Release files / mpmsub-2025.10.16.tar.gz

Download URL mpmsub-2025.10.16.tar.gz
Size 20.0 kB
Tags Source
SHA-256 checksum
How to use checksums
cb72dc2b96ec16cce1ab38b68db13ed7cd15f68e9ac6ab840c109e4d93129a30
BLAKE2b-256 checksum
How to use checksums
cf0f48ea1d3c220c50543bcfbc63d6d55c1eab8efb410d99702530eebe95930e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

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 16, 2025.

Transparency log

Release files / mpmsub-2025.10.16-py3-none-any.whl

Download URL mpmsub-2025.10.16-py3-none-any.whl
Size 17.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
835cc362b03cfb5798f44e5d13f7b1abd195a1963c46d3509c54ff517c804f37
BLAKE2b-256 checksum
How to use checksums
d953cc1d935f6e8ae87488ba78c72d0ee0de237897ba0fdd4700d907eb41e7dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

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 16, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

2025.10.16 This release

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