martes, 8 de mayo de 2012

Python con C++

Usaremos una biblioteca incluida de forma nativa a partir de las versiones 2.5 de Python llamada ctypes. Está nos permite usar funciones de bibliotecas compartidas de C. De esta forma podemos conseguir que nuestro programa no pierda la eficiencia de C y sin renunciar la legibilidad y limpieza de Python.

Comenzamos con un ejemplo sencillo crearemos una biblioteca de C llamada "bPrimos.c".
int esPrimo(int n){
    int nc=0;
    for(i=1;i<=num;i++){
        if(n%i==0) nc++;
        if(nc>2) break;
    }
    if(nc==2) return "Es primo";
return "No es primo";}

Ahora compilamos la bilbioteca "bPrimos.c" para ello ejecutamos lo siguiente:
gcc -c -fPIC bPrimos.c
gcc -shared bPrimos.o -o bPrimos.so

Una vez creada la librería "bPrimos.so" podemos usarla en nuestro código de Python
import sys

#comprobamos que tenemos incluida la librería ctypes
try:
    from ctypes import *
except ImportError:
    print "Error, la biblioteca ctypes no está disponible"
    sys.exit(-1)

#Cargamos la biblioteca creada en C
p=cdll.LoadLibrary('pPrimos.so')

numero=int(raw_input("Introduce una cifra "))
print 'El numero introducido ', p.esPrimo(numero)

Sencillo verdad. Espero que os sea de gran utilidad.