Skip to main content

ezMPI

A simple MPI-based processing pool for Python that distributes tasks across multiple processes using MPI (Message Passing Interface).

Features

  • Simple API similar to Python's built-in map() function
  • Automatic worker process management
  • Support for complex objects via optional dill integration
  • Context manager support for automatic cleanup
  • Lightweight and easy to integrate into existing projects

Requirements

  • Python 3.8+
  • MPI implementation (OpenMPI, MPICH, or similar)
  • mpi4py library

Installation

Install from source

git clone https://github.com/minask/ezmpi.git
cd ezmpi
pip install -e .

Install with development dependencies

pip install -e ".[dev]"

Install with dill support

pip install -e ".[dill]"

Quick Start

Basic Usage

from ezmpi import MPIPool

def square(x):
    return x * x

# Create a pool (must be run with mpiexec)
with MPIPool() as pool:
    results = pool.map(square, [1, 2, 3, 4, 5])
    print(results)  # [1, 4, 9, 16, 25]

Run with multiple processes:

mpiexec -n 4 python your_script.py

Using dill for Complex Objects

from ezmpi import MPIPool

def process_data(data):
    # Complex processing logic
    return sum(data) / len(data)

# Enable dill for better pickling support
with MPIPool(use_dill=True) as pool:
    results = pool.map(process_data, [[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    print(results)  # [2.0, 5.0, 8.0]

MPI Execution

ezMPI requires at least 2 MPI processes (1 master + 1+ workers):

# Minimum: 2 processes
mpiexec -n 2 python script.py

# Typical: 4-8 processes
mpiexec -n 4 python script.py

# On HPC systems
srun -n 32 python script.py

Note: The master process (rank 0) coordinates tasks, all other processes are workers.

API Reference

MPIPool

class MPIPool(comm=None, use_dill=True)

Parameters:

  • comm: MPI communicator (optional, defaults to MPI.COMM_WORLD)
  • use_dill: Use dill for pickling instead of standard pickle (default: True)

Methods:

  • map(worker, tasks): Execute worker function on each task in parallel
  • close(): Shutdown worker processes
  • is_master(): Check if current process is the master
  • is_worker(): Check if current process is a worker

Development

Setup Development Environment

git clone https://github.com/minask/ezmpi.git
cd ezmpi
pip install -e ".[dev]"

Running Tests

# Run basic tests pytest -v

# Run MPI tests
mpiexec -n 4 pytest -v

# Run with coverage
pytest --cov=ezmpi --cov-report=html

Code Quality

# Lint code
ruff check .

# Format code
ruff format .

# Type checking
mypy src/ezmpi

# Import sorting
isort src/

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Acknowledgments

This implementation is inspired by and adapted from similar MPI pool implementations in the scientific Python community.

Metadata

Release files for ezmpi 0.1.0

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

Source distribution (sdist)

Source distribution for ezmpi 0.1.0
File Size Uploaded Provenance Actions
ezmpi-0.1.0.tar.gz 36.3 kB With provenance Details for ezmpi-0.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 44.3 kB

Release files / ezmpi-0.1.0.tar.gz

Download URL ezmpi-0.1.0.tar.gz
Size 36.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c6df664b347ce4d2194ddb6b5ee3d28ee3268416a39f01dc5cf483cc92168d7c
BLAKE2b-256 checksum
How to use checksums
a313fe489f31b2f678e1e942d41f0fb93fd180b43381454d31d735ed57d7ceb1
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 Jan 20, 2026.

Transparency log

Release files / ezmpi-0.1.0-py3-none-any.whl

Download URL ezmpi-0.1.0-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5dbbd6904b1d079bad93bcb5d0ab66cf41a54ec53c40384b89c15ccae8d20d6c
BLAKE2b-256 checksum
How to use checksums
d59bacad884253c25383f91c1cb637288c5f82238ef3fc19ee77cfdf5434bf6b
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 Jan 20, 2026.

Transparency log

Security for ezmpi 0.1.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 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ezmpi-0.1.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 Jan 20, 2026.

Transparency log

A 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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

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