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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mpmsub-2025.10.16.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

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

mpmsub-2025.10.16-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file mpmsub-2025.10.16.tar.gz.

File metadata

  • Download URL: mpmsub-2025.10.16.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mpmsub-2025.10.16.tar.gz
Algorithm Hash digest
SHA256 cb72dc2b96ec16cce1ab38b68db13ed7cd15f68e9ac6ab840c109e4d93129a30
MD5 390258067ef35e1f64cf71c9e1692244
BLAKE2b-256 cf0f48ea1d3c220c50543bcfbc63d6d55c1eab8efb410d99702530eebe95930e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpmsub-2025.10.16.tar.gz:

Publisher: publish.yml on nextgenusfs/mpmsub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mpmsub-2025.10.16-py3-none-any.whl.

File metadata

  • Download URL: mpmsub-2025.10.16-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mpmsub-2025.10.16-py3-none-any.whl
Algorithm Hash digest
SHA256 835cc362b03cfb5798f44e5d13f7b1abd195a1963c46d3509c54ff517c804f37
MD5 909265de490c7255248d87c41e552371
BLAKE2b-256 d953cc1d935f6e8ae87488ba78c72d0ee0de237897ba0fdd4700d907eb41e7dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for mpmsub-2025.10.16-py3-none-any.whl:

Publisher: publish.yml on nextgenusfs/mpmsub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2025.10.16 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page