O'Reilly logo

Python Unlocked by Arun Tigeraniya

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Using C speeds

Key 4: Running at C speeds.

SWIG

SWIG is an interface compiler that connects programs written in C, and C++ with scripting languages. We can use SWIG to call C, C++ compiled in Python. Let's say that we have a factorial computing library in C, with source code in the fact.c file and the corresponding fact.h header file:

The source code in fact.c is as follows:

#include "fact.h"
long int fact(long int n) {
    if (n < 0){
        return 0;
    }
    if (n == 0) {
        return 1;
    }
    else {
        return n * fact(n-1);
    }
}

The source code in fact.h is as follows:

long int fact(long int n);

Now, we need to write an interface file for SWIG, which tells it what it needs to be exposed to Python:

/* File: fact.i */ %module fact %{ #define SWIG_FILE_WITH_INIT #include "fact.h" ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required