Pythran is a Python to c++ compiler for a subset of the Python language, with a focus on scientific computing. It takes a Python module annotated with a few interface description and turns it into a native python module with the same interface, but (hopefully) faster.
It is meant to efficiently compile scientific programs, and takes advantage of multi-cores and SIMD instruction units.
Pythran supports Python 2.7 and also has a beta Python 3 support.
Pythran releases are hosted on http://pypi.python.org/pypi/pythran.
Pythran is available through Conda on https://conda.anaconda.org/serge-sans-paille.
Pythran depends on a few Python modules and several C++ libraries. On a debian-like platform, run:
$> sudo apt-get install libgmp-dev libblas-dev $> sudo apt-get install python-dev python-ply python-networkx python-numpy
Run the classic:
$> sudo apt-get update $> sudo apt-get install pythran
$> brew install gmp $> brew install cmake $> easy_install pip $> pip install numpy pythran
Depending on your setup, you may need to add the following to your \~/.pythranrc`` file:
[compiler] CXX=g++-4.9 CC=gcc-4.9
$> yaourt -S python2-pythran-git
A simple pythran input could be
""" Naive dotproduct! Pythran supports numpy.dot """ #pythran export dprod(int list, int list) def dprod(l0,l1): """WoW, generator expression, zip and sum.""" return sum(x * y for x, y in zip(l0, l1))
To turn it into a native module, run:
That will generate a native dprod.so that can be imported just like the former module:
$> python -c 'import dprod' # this imports the native module instead
A todo list is maintained in the eponymous TODO file.
The Command Line Interface documentation is available from the pythran help command:
Some extra developer documentation is also available using pydoc. Beware, this is the computer science incarnation for the famous Where’s Waldo? game:
$> pydoc pythran $> pydoc pythran.typing
pythran/tests/cases/ directory from the sources.