Skip to main content

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), ==2.7 or >=3.7

  • setuptools, >=42

  • wheel, >=0.1

  • six, >=1.7.3

Optional requirements:

  • dill, >=0.3.5

More Information

Probably the best way to get started is to look at the documentation at http://ppft.rtfd.io. Also, you can see a set of example scripts in ppft.examples. You can run the test suite with python -m ppft.tests. ppft will create and execute jobs on local workers (automatically created using python -u -m ppft). Additionally, remote servers can be created with ppserver (or python -m ppft.server), and then jobs can be distributed to remote workers. See --help for more details on how to configure a server. Please feel free to submit a ticket on github, or ask a question on stackoverflow (@Mike McKerns). If you would like to share how you use ppft in your work, please send an email (to mmckerns at uqfoundation dot org).

Citation

If you use ppft to do research that leads to publication, we ask that you acknowledge use of ppft by citing the following in your publication:

M.M. McKerns, L. Strand, T. Sullivan, A. Fang, M.A.G. Aivazis,
"Building a framework for predictive science", Proceedings of
the 10th Python in Science Conference, 2011;
http://arxiv.org/pdf/1202.1056

Michael McKerns and Michael Aivazis,
"pathos: a framework for heterogeneous computing", 2010- ;
https://uqfoundation.github.io/project/pathos

Please see https://uqfoundation.github.io/project/pathos or http://arxiv.org/pdf/1202.1056 for further information.

Download files

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

Source Distribution

ppft-1.7.6.5.tar.gz (129.1 kB view details)

Uploaded Source

Built Distribution

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

ppft-1.7.6.5-py2.py3-none-any.whl (52.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file ppft-1.7.6.5.tar.gz.

File metadata

  • Download URL: ppft-1.7.6.5.tar.gz
  • Upload date:
  • Size: 129.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for ppft-1.7.6.5.tar.gz
Algorithm Hash digest
SHA256 47e0dab87a516c0b9992cd5b0c908348e4c7d964304d106b227fad28ae03219e
MD5 fa21b6d536f2166abe224309c1d5dea5
BLAKE2b-256 c5b6b26bde67d90ae6e98050b9a98c893301a8363d29e39625d65f69f227ec37

See more details on using hashes here.

File details

Details for the file ppft-1.7.6.5-py2.py3-none-any.whl.

File metadata

  • Download URL: ppft-1.7.6.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 52.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for ppft-1.7.6.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 07166097d7dd45af7b98859654390d579d11dadf20780f6baca4bded3f55a580
MD5 89537ea846e8406e09ccc2c6a8fd620e
BLAKE2b-256 dce95060afcfad6e19f4725d59e64398e31ec9439863244b401cb3437becbbff

See more details on using hashes here.

Release history Release notifications | RSS feed

1.7.8

2 files

1.7.7

2 files

1.7.6.9

2 files

1.7.6.8

2 files

1.7.6.7

2 files

1.7.6.6

2 files

This release

1.7.6.5 This release

2 files

1.6.6.4

3 files

1.6.6.3

3 files

1.6.6.2

1 file

1.6.6.1

1 file

1.6.4.9

1 file

1.6.4.8

1 file

1.6.4.7.1

1 file

1.6.4.6

2 files

1.6.4.5

2 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