_images/pythonring.png

Python is a mature dynamic language whose interpreters can interact with all major computing platforms today.

execnet provides a share-nothing model with channel-send/receive communication for distributing execution across many Python interpreters across version, platform and network barriers. It has a minimal and fast API targetting the following uses:

  • distribute tasks to (many) local or remote CPUs
  • write and deploy hybrid multi-process applications
  • write scripts to administer multiple environments

Features

  • automatic bootstrapping: no manual remote installation.
  • safe and simple serialization of python builtin types for sending/receiving structured data messages. (New in 1.1) execnet offers a new dumps/loads API which allows cross-interpreter compatible serialization of Python builtin types.
  • flexible communication: synchronous send/receive as well as callback/queue mechanisms supported
  • easy creation, handling and termination of multiple processes
  • well tested interactions between CPython 2.5-2.7, CPython-3.3, Jython 2.5.1 and PyPy interpreters.
  • fully interoperable between Windows and Unix-ish systems.
  • many tested examples

Known uses

Project status

The current 1.0 series aims at basic API stabilization, improved tracing and robust termination.

The 1.1 series will target setting up permanent networks and offering unix-shell-like capabilities to spawn processes and applications.

execnet was conceived and is actively developed by Holger Krekel. The package is licensed under the MIT license since version 1.2.