Curso Gratuito en Ciencia de Datos y Aprendizaje Automático con Python




Interfaz con bibliotecas compiladas


Como hemos comentado, Python para la computación científica realmente consiste en unir diferentes bibliotecas científicas escritas en un lenguaje compilado como C o Fortran. En última instancia, es posible que desee utilizar bibliotecas que no estén disponibles con los enlaces de Python existentes. Hay muchas, muchas opciones para hacer esto. La forma más directa es utilizar el módulo ctypes incorporado , que proporciona herramientas para proporcionar punteros de entrada / salida a las funciones de la biblioteca, como si las estuviera llamando desde un lenguaje compilado. Esto significa que usted tiene que saber las firmas de función en la biblioteca exactamente -Cómo muchos bytes para cada entrada y el número de bytes para la salida. Usted es responsable de crear las entradas exactamente de la manera que espera la biblioteca y de recopilar las salidas. Aunque esto parezca tedioso, los enlaces de Python para vastas bibliotecas se han creado de esta manera.


Si desea una forma más sencilla, SWIG es una herramienta de generación automática de envoltorios que puede proporcionar enlaces a una larga lista de lenguajes, no solo a Python; así que si necesita enlaces para varios idiomas, esta es su mejor y única opción. El uso de SWIG consiste en escribir un archivo de interfaz para que la biblioteca compilada de Python enlazada dinámicamente ( archivos .pyd ) se pueda importar fácilmente al intérprete de Python. Bibliotecas enormes y complejas como Trilinos (Sandia National Labs) se han interconectado a Python usando SWIG , por lo que es una opción bien probada . SWIG también admite matrices Numpy.


Sin embargo, el modelo SWIG asume que desea continuar desarrollando principalmente en C / Fortran y se está conectando a Python por motivos de usabilidad u otras razones. Por otro lado, si comienza a desarrollar algoritmos en Python y luego desea acelerarlos, Cython es una excelente opción porque proporciona un lenguaje mixto que le permite tener entremezclados tanto el lenguaje C como el código Python. Como SWIG , debe escribir archivos adicionales en este dialecto híbrido de Python / C para que Cython genere el código C que finalmente compilará. La mejor parte de Cython es el per fi l que puede generar un informe HTML que muestra dónde el código es lento y podría beneficiarse de la traducción aCython . Jupyter Notebook se integra muy bien con Cython a través de su comando mágico % cython . Esto significa que puede escribir código Cython en una celda en Jupyter Notebook y el cuaderno manejará todos los detalles tediosos como configurar los archivos intermedios para compilar la extensión Cython . Cython también admite matrices Numpy.


Cython y SWIG son solo dos de las formas de crear enlaces de Python para sus bibliotecas compiladas favoritas. Otras opciones notables (pero menos populares) incluyen FWrap , f2py , CFFI y weave . También es posible usar la propia API de Python directamente, pero esta es una tarea tediosa que es difícil de justificar dada la existencia de tantas alternativas bien desarrolladas .