# pathos

> parallel graph management and execution in heterogeneous computing

- **URL**: https://www.freshcrate.ai/projects/pathos
- **Author**: Mike McKerns
- **Category**: Frameworks
- **Latest version**: `0.3.5` (2026-04-21)
- **License**: BSD-3-Clause
- **Source**: https://github.com/uqfoundation/pathos/issues
- **Homepage**: https://github.com/uqfoundation/pathos
- **Language**: Python
- **GitHub**: 1,484 stars, 88 forks
- **Registry**: pypi (`pathos`)
- **Tags**: `pypi`

## Description

--------------------------------------------------------------------------
pathos: parallel graph management and execution in heterogeneous computing
--------------------------------------------------------------------------

About the Pathos Framework
==========================

``pathos`` is a framework for heterogeneous computing. It provides a consistent
high-level interface for configuring and launching parallel computations
across heterogeneous resources. ``pathos`` provides configurable launchers for
parallel and distributed computing, where each launcher contains the
syntactic logic to configure and launch jobs in an execution environment.
Examples of launchers that plug into ``pathos`` are: a queue-less MPI-based
launcher (in ``pyina``), a ssh-based launcher (in ``pathos``), and a multi-process
launcher (in ``multiprocess``).

``pathos`` provides a consistent interface for parallel and/or distributed
versions of ``map`` and ``apply`` for each launcher, thus lowering the barrier
for users to extend their code to parallel and/or distributed resources.
The guiding design principle behind ``pathos`` is that ``map`` and ``apply``
should be drop-in replacements in otherwise serial code, and thus switching
to one or more of the ``pathos`` launchers is all that is needed to enable
code to leverage the selected parallel or distributed computing resource.
This not only greatly reduces the time to convert a code to parallel, but it
also enables a single code-base to be maintained instead of requiring
parallel, serial, and distributed versions of a code. ``pathos`` maps can be
nested, thus hierarchical heterogeneous computing is possible by merely
selecting the desired hierarchy of ``map`` and ``pipe`` (``apply``) objects.

The ``pathos`` framework is composed of several interoperating packages:

    - ``dill``: serialize all of Python
    - ``pox``: utilities for filesystem exploration and automated builds
    - ``klepto``: persistent caching to memory, disk, or database
    - ``multiprocess``: better multiprocessing and multithreading in Python
    - ``ppft``: distributed and parallel Python
    - ``pyina``: MPI parallel ``map`` and cluster scheduling
    - ``pathos``: graph management and execution in heterogeneous computing


About Pathos
============

The ``pathos`` package provides a few basic tools to make parallel and
distributed computing more accessible to the end user. The goal of ``pathos``
is to enable the user to extend their own code to parallel and distributed
computing with minimal refactoring.

``pathos`` provides methods for configuring, launching, monitoring, and
controlling a service on a remote host. One of the most basic features
of ``pathos`` is the ability to configure and launch a RPC-based service
on a remote host. ``pathos`` seeds the remote host with the  ``portpicker``
script, which allows the remote host to inform the localhost of a port
that is available for communication.

Beyond the ability to establish a RPC service, and then post requests,
is the ability to launch code in parallel. Unlike parallel computing
performed at the node level (typically with MPI), ``pathos`` enables the
user to launch jobs in parallel across heterogeneous distributed resources.
``pathos`` provides distributed ``map`` and ``pipe`` algorithms, where a mix of
local processors and distributed workers can be selected.  ``pathos``
also provides a very basic automated load balancing service, as well as
the ability for the user to directly select the resources.

The high-level ``pool.map`` interface, yields a ``map`` implementation that
hides the RPC internals from the user. With ``pool.map``, the user can launch
their code in parallel, and as a distributed service, using standard Python
and without writing a line of server or parallel batch code.

RPC servers and communication in general is known to be insecure.  However,
instead of attempting to make the RPC communication itself secure, ``pathos``
provides the ability to automatically wrap any distributes service or
communication in a ssh-tunnel. Ssh is a universally trusted method.
Using ssh-tunnels, ``pathos`` has launched several distributed calculations
on national lab clusters, and to date has performed test calculations
that utilize node-to-node communication between several national lab clusters
and a user's laptop.  ``pathos`` allows the user to configure and launch
at a very atomistic level, through raw access to ssh and scp. 

``pathos`` is the core of a Python framework for heterogeneous computing.
``pathos`` is in active development, so any user feedback, bug reports, comments,
or suggestions are highly appreciated.  A list of issues is located at https://github.com/uqfoundation/pathos/issues, with a legacy list maintained at https://uqfoundation.github.io/project/pathos/query.


Major Features
==============

``pathos`` provides a configurable distributed parallel ``map`` interface
to launching RPC service calls, with:

    - a ``map`` interf

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `0.3.5` | 2026-04-21 | Low | Imported from PyPI (0.3.5) |
| `0.3.4` | 2025-04-17 | Low | # 0.3.4 Release Notes `pathos` provides a few basic tools to make parallel and distributed computing more accessable to the end user. The goal of `pathos` is to enable the user to extend their own code to parallel and distributed computing with minimal refactoring.  `pathos` installs with `pip`: `$ pip install pathos`  `pathos` requires: `- python or pypy, >=3.8` `- dill, >=0.4.0` `- pox, >=0.3.6` `- ppft, >=1.7.7` `- multiprocess, >=0.70.18`  `pathos` is licensed under 3-clause BSD |
| `0.3.3` | 2024-09-30 | Low | # 0.3.3 Release Notes `pathos` provides a few basic tools to make parallel and distributed computing more accessable to the end user. The goal of `pathos` is to enable the user to extend their own code to parallel and distributed computing with minimal refactoring.  `pathos` installs with `pip`: `$ pip install pathos`  `pathos` requires: `- python or pypy, >=3.8` `- dill, >=0.3.9` `- pox, >=0.3.5` `- ppft, >=1.7.6.9` `- multiprocess, >=0.70.17`  `pathos` is licensed under 3-clause B |
| `0.3.2` | 2024-01-28 | Low | # 0.3.2 Release Notes `pathos` provides a few basic tools to make parallel and distributed computing more accessable to the end user. The goal of `pathos` is to enable the user to extend their own code to parallel and distributed computing with minimal refactoring.  `pathos` installs with `pip`: `$ pip install pathos`  `pathos` requires: `- python or pypy, >=3.8` `- dill, >=0.3.8` `- pox, >=0.3.4` `- ppft, >=1.7.6.8` `- multiprocess, >=0.70.16`  `pathos` is licensed under 3-clause B |
| `pathos-0.3.1` | 2023-07-23 | Low | # pathos 0.3.1 Release Notes `pathos` provides a few basic tools to make parallel and distributed computing more accessable to the end user. The goal of `pathos` is to enable the user to extend their own code to parallel and distributed computing with minimal refactoring.  `pathos` installs with `pip`: `$ pip install pathos`  `pathos` requires: `- python or pypy, >=3.7` `- dill, >=0.3.7` `- pox, >=0.3.3` `- ppft, >=1.7.6.7` `- multiprocess, >=0.70.15`  `pathos` is licensed under 3-c |
| `pathos-0.3.0` | 2022-10-24 | Low | # pathos 0.3.0 Release Notes `pathos` provides a few basic tools to make parallel and distributed computing more accessable to the end user. The goal of `pathos` is to enable the user to extend their own code to parallel and distributed computing with minimal refactoring.  `pathos` installs with `pip`: `$ pip install pathos`  `pathos` requires: `- python or pypy, >=3.7` `- dill, >=0.3.6` `- pox, >=0.3.2` `- ppft, >=1.7.6.6` `- multiprocess, >=0.70.14`  `pathos` is licensed under 3-c |
| `pathos-0.2.9` | 2022-05-24 | Low | `pathos` provides a few basic tools to make parallel and distributed computing more accessable to the end user. The goal of `pathos` is to enable the user to extend their own code to parallel and distributed computing with minimal refactoring.  `pathos` installs with `pip`: `$ pip install pathos`  `pathos` requires: `- python or pypy, ==2.7 or >=3.7` `- dill, >=0.3.5.1` `- pox, >=0.3.1` `- ppft, >=1.7.6.5` `- multiprocess, >=0.70.13`  `pathos` is licensed under 3-clause BSD:  ``` |
| `pathos-0.2.8` | 2021-06-14 | Low | `pathos` provides a few basic tools to make parallel and distributed computing more accessable to the end user. The goal of `pathos` is to enable the user to extend their own code to parallel and distributed computing with minimal refactoring.  `pathos` installs with `easy_install` or `pip`: `$ pip install pathos`  `pathos` requires: `- python, version == 2.7  *or*  version >= 3.6` `- dill, version >= 0.3.4` `- pox, version >= 0.3.0` `- ppft, version >= 1.6.6.4` `- multiprocess >= 0.70 |
| `pathos-0.2.7` | 2020-11-02 | Low | `pathos` provides a few basic tools to make parallel and distributed computing more accessable to the end user. The goal of `pathos` is to enable the user to extend their own code to parallel and distributed computing with minimal refactoring.  `pathos` installs with `easy_install` or `pip`: `$ pip install pathos`  `pathos` requires: `- python, version == 2.7  *or*  version >= 3.5` `- dill, version >= 0.3.3` `- pox, version >= 0.2.9` `- ppft, version >= 1.6.6.3` `- multiprocess >= 0.70 |
| `pathos-0.2.6` | 2020-06-16 | Low | `pathos` provides a few basic tools to make parallel and distributed computing more accessable to the end user. The goal of `pathos` is to enable the user to extend their own code to parallel and distributed computing with minimal refactoring.  `pathos` installs with `easy_install` or `pip`: `$ pip install pathos`  `pathos` requires: `- python, version == 2.7  *or*  version >= 3.5` `- dill, version >= 0.3.2` `- pox, version >= 0.2.8` `- ppft, version >= 1.6.6.2` `- multiprocess >= 0.70 |

## Citation

- HTML: https://www.freshcrate.ai/projects/pathos
- Markdown: https://www.freshcrate.ai/projects/pathos.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/pathos/deps

_Generated by freshcrate.ai. Indexes pypi releases for AI-agent ecosystem packages._
