Description
------------------------------------- ppft: distributed and parallel Python ------------------------------------- About Ppft ========== ``ppft`` is a friendly fork of Parallel Python (``pp``). ``ppft`` extends Parallel Python to provide packaging and distribution with ``pip`` and ``setuptools``, support for Python 3, and enhanced serialization using ``dill.source``. ``ppft`` uses Parallel Python to provide mechanisms for the parallel execution of Python code on SMP (systems with multiple processors or cores) and clusters (computers connected via network). Software written in Python finds applications in a broad range of the categories including business logic, data analysis, and scientific calculations. This together with wide availability of SMP computers (multi-processor or multi-core) and clusters (computers connected via network) on the market create the demand in parallel execution of Python code. The most common way to write parallel applications for SMP computers is to use threads. However, the Python interpreter uses the GIL (Global Interpreter Lock) for internal bookkeeping, where the GIL only allows one Python byte-code instruction to execute at a time, even on an SMP computer. Parallel Python overcomes this limitation, and provides a simple way to write parallel Python applications. Internally, processes and IPC (Inter Process Communications) are used to organize parallel computations. Parallel Python is written so that the details and complexity of IPC are handled internally, and the calling application just submits jobs and retrieves the results. Software written with Parallel Python works in parallel on many computers connected via a local network or the Internet. Cross-platform portability and dynamic load-balancing allows Parallel Python to parallelize computations efficiently even on heterogeneous and multi-platform clusters. Visit http://www.parallelpython.com for further information on Parallel Python. ``ppft`` is part of ``pathos``, a Python framework for heterogeneous computing. ``ppft`` 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/ppft/issues, with a legacy list maintained at https://uqfoundation.github.io/project/pathos/query. Major Features ============== ``ppft`` provides: - parallel execution of Python code on SMP and clusters - easy-to-understand job-based parallelization - automatic detection of the number of effective processors - dynamic processor allocation (at runtime) - low overhead for jobs with the same function (through transparent caching) - dynamic load balancing (jobs are distributed at runtime) - fault-tolerance (if a node fails, tasks are rescheduled on the others) - auto-discovery of computational resources - dynamic allocation of computational resources - SHA based authentication for network connections - enhanced serialization, using ``dill.source`` Current Release =============== The latest released version of ``ppft`` is available from: https://pypi.org/project/ppft ``ppft`` is distributed under a 3-clause BSD license, and is a fork of ``pp-1.6.6``. Development Version =================== You can get the latest development version with all the shiny new features at: https://github.com/uqfoundation If you have a new contribution, please submit a pull request. Installation ============ ``ppft`` can be installed with ``pip``:: $ pip install ppft To include enhanced serialization, using ``dill.source``, install:: $ pip install ppft[dill] If Parallel Python is already installed, it should be uninstalled before ``ppft`` is installed -- otherwise, ``import pp`` may point to the original and not to the ``ppft`` fork. Requirements ============ ``ppft`` requires: - ``python`` (or ``pypy``), **>=3.9** - ``setuptools``, **>=42** Optional requirements: - ``dill``, **>=0.4.1** Basic Usage =========== ``ppft`` is a fork of the Parallel Python package (``pp``) that has been converted from Python 2 to Python 3, made PEP 517 compliant, and augmented with ``dill.source``. For simple parallel execution, first create a job ``Server`` where the number nodes available is autodetected:: >>> import ppft as pp >>> job_server = pp.Server() The number of nodes can be specified by passing an int as the first argument when creating the server (i.e. ``Server(4)`` creates a server with four nodes). The server uses ``submit`` to execute jobs in parallel. ``submit`` takes a function, a tuple of the arguments to pass to the function, a tuple of any functions used but not imported in the function, and a tuple of any modules required to produce the function:: >>> import math >>> f1 = job_server.submit(math.sin, (math.pi/2,), (), ('math',)) >>> f2 = job_server.submit(min, (3.2, 10.0, 7.5), (), ()) >>> f3 = job_server.submit(sum, ([1,2,3],)
Release History
| Version | Changes | Urgency | Date |
|---|---|---|---|
| 1.7.8 | Imported from PyPI (1.7.8) | Low | 4/21/2026 |
| 1.7.7 | # 1.7.7 Release Notes Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with pip: `$ pip install ppft` Ppft requires: `- python or pypy, >=3.8` Optional requirements: `- dill, >=0.4.0` (install with `$ pip install ppft[dill]`) Ppft is licensed under a 3-clause BSD license. ## What's Changed * update travis badge link by @mmckerns in https://github.com/uqfoundation/ppft/pull/67 * docs formatting for sphin | Low | 4/16/2025 |
| 1.7.6.9 | # 1.7.6.9 Release Notes Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with pip: `$ pip install ppft` Ppft requires: `- python or pypy, >=3.8` Optional requirements: `- dill, >=0.3.9` (install with `$ pip install ppft[dill]`) Ppft is licensed under a 3-clause BSD license. ## What's Changed * Bump idna from 3.4 to 3.7 in /docs by @dependabot in https://github.com/uqfoundation/ppft/pull/57 * Bump jinja2 f | Low | 9/29/2024 |
| 1.7.6.8 | # 1.7.6.8 Release Notes Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with pip: `$ pip install ppft` Ppft requires: `- python or pypy, >=3.8` Optional requirements: `- dill, >=0.3.8` (install with `$ pip install ppft[dill]`) Ppft is licensed under a 3-clause BSD license. ## What's Changed * drop formal support for python 3.7 by @mmckerns in https://github.com/uqfoundation/ppft/pull/48 * define html_the | Low | 1/28/2024 |
| ppft-1.7.6.7 | # ppft 1.7.6.7 Release Notes Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with pip: `$ pip install ppft` Ppft requires: `- python or pypy, >=3.7` Optional requirements: `- dill, >=0.3.7` (install with `$ pip install ppft[dill]`) Ppft is licensed under a 3-clause BSD license. ## What's Changed * Bump requests from 2.27.1 to 2.31.0 in /docs by @dependabot in https://github.com/uqfoundation/ppft/pull/46 | Low | 7/23/2023 |
| ppft-1.7.6.6 | # ppft 1.7.6.6 Release Notes Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with pip: `$ pip install ppft` Ppft requires: `- python or pypy, >=3.7` Optional requirements: `- dill, >=0.3.6` (install with `$ pip install ppft[dill]`) Ppft is licensed under a 3-clause BSD license. **Full Changelog**: https://github.com/uqfoundation/ppft/compare/ppft-1.7.6.5...ppft-1.7.6.6 | Low | 10/23/2022 |
| ppft-1.7.6.5 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with pip: `$ pip install ppft` Ppft requires: `- python or pypy, ==2.7 or >=3.7` `- six, >=1.7.3` Optional requirements: `- dill, >=0.3.5` (install with `$ pip install ppft[dill]`) Ppft is licensed under a 3-clause BSD license. | Low | 5/20/2022 |
| ppft-1.6.6.4 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with easy_install or pip: `$ pip install ppft` Ppft requires: `- python, version == 2.7 *or* version >= 3.6` `- six, version >= 1.7.3` Optional requirements: `- dill, version >= 0.3.4` (install with `$ pip install ppft[dill]`) Ppft is licensed under a BSD-like license. | Low | 6/13/2021 |
| ppft-1.6.6.3 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with easy_install or pip: `$ pip install ppft` Ppft requires: `- python, version == 2.7 *or* version >= 3.5` `- six, version >= 1.7.3` Optional requirements: `- dill, version >= 0.3.3` (install with `$ pip install ppft[dill]`) Ppft is licensed under a BSD-like license. | Low | 11/2/2020 |
| ppft-1.6.6.2 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with easy_install or pip: `$ pip install ppft` Ppft requires: `- python, version == 2.7 *or* version >= 3.5` `- six, version >= 1.7.3` Optional requirements: `- dill, version >= 0.3.2` (install with `$ pip install ppft[dill]`) Ppft is licensed under a BSD-like license. | Low | 6/16/2020 |
| ppft-1.6.6.1 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with easy_install or pip: `$ pip install ppft` Ppft requires: `- python, version >=2.6 *or* version >= 3.1` `- six, version >= 1.7.3` Optional requirements: `- dill, version >= 0.3.0` (install with `$ pip install ppft[dill]`) Ppft is licensed under a BSD-like license. | Low | 6/27/2019 |
| ppft-1.6.4.9 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with easy_install or pip: `$ pip install ppft` Ppft requires: `- python, version >=2.5 *or* version >= 3.1` `- six, version >= 1.7.3` Optional requirements: `- dill, version >= 0.2.9` (install with `$ pip install ppft[dill]`) Ppft is licensed under a BSD-like license. | Low | 1/21/2019 |
| ppft-1.6.7.8 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with easy_install or pip: `$ pip install ppft` Ppft requires: `- python, version >=2.5 *or* version >= 3.1` `- six, version >= 1.7.3` Optional requirements: `- dill, version >= 0.2.8.1` Ppft is licensed under a BSD-like license. | Low | 6/21/2018 |
| pfft-1.6.4.7.1 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with easy_install or pip: `$ easy_install ppft` Ppft requires: `- python, version >=2.5 *or* version >= 3.1` `- six, version >= 1.7.3` Optional requirements: `- dill, version >= 0.2.6` Ppft is licensed under a BSD-like license. | Low | 2/2/2017 |
| ppft-1.6.4.6 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with easy_install or pip: `$ easy_install ppft` Ppft requires: `- python, version >=2.5 *or* version >= 3.1` `- six, version >= 1.7.3` Optional requirements: `- dill, version >= 0.2.5` Ppft is licensed under a BSD-like license. | Low | 2/6/2016 |
| ppft-1.6.4.5 | Basically, ppft is a friendly fork of pp, where ppft provides an easier install and better serialization. Ppft installs with easy_install or pip: `$ easy_install ppft` Ppft requires: `- python, version >=2.5 *or* version >= 3.1` `- six, version >= 1.7.3` Optional requirements: `- dill, version >= 0.2.2` Ppft is licensed under a BSD-like license. | Low | 1/14/2015 |
