Local
Documentation
Download
Global
Python
NumPy
Numarray
SWIG
Simula Research Laboratory

Instant inlining of C/C++ code in Python

News

Release 0.9 (3/01/07): Port to Windows with mingw pluss some added functionality and clean up.
Release 0.8 (5/10/06): Added support for NumPy and Numarray. Release 0.7 (12/09/06): Added functionality for the use of pkg-config files.
Release 0.6 (17/07/06): Cleanup of the user interface.
Release 0.5 (10/03/06): Instant uses SWIG directors for cross language inheritance.
Release 0.4 (03/01/05): Added md5sums to avoid unnecessary compilation.
Release 0.3 (27/11/05): Instant supports Numeric arrays.

Appetizer

Instant is a Python module that allows for instant inlining of C and C++ code in Python. It is a small Python module built on top of SWIG and Distutils.

Example of use:

from Instant import inline

add_func = inline("double add(double a, double b){ return a+b; }") 

print "The sum of 3 and 4.5 is ", add_func(3, 4.5)  

Example with NumPy arrays converted to C double arrays:
from Instant import inline_with_numpy

c_code = """
double sum (int n1, double* array1){
  double tmp = 0.0; 
  for (int i=0; i<n1; i++) {  
      tmp += array1[i]; 
  }
  return tmp; 
}
"""


sum_func = inline_with_numpy(c_code, arrays = [['n1', 'array1']])

a = numpy.arange(10000000); a = numpy.sin(a)

sum1 = sum_func(a)

On my machine, the above example is about twice as fast as using the sum function implemented in NumPy. This comparison is of course not fair, since there are no safety checks in the above example. The comparison is implemented in the file test9.py that comes with the Instant package. The old package Numeric is about as slow as NumPy (test2.py), while the same example with Numarray is about as fast as with Instant (test10.py).

Requirement

Instant requires Python and SWIG. It has only been tested with Python 2.3 and 2.4 and SWIG 1.3.24 or newer. It only runs on Unix systems.

Related Projects

The weave module in SciPy
The PyInline module
The PyRex module


Magne Westlie
Kent-Andre Mardal