Optimiza tu código de Python con Numba [Tutorial]

Autor: | Última modificación: 21 de enero de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

Python es el lenguaje de programación con más crecimiento en los últimos años, también cuenta con una curva de aprendizaje idónea, para aquellos con poca experiencia en programación gracias a su sintaxis. Actualmente es muy utilizado en Big Data y, gracias a esta necesidad de procesar grandes volúmenes de datos agregando funciones numéricas, ha nacido una nueva opción, Python con Numba es un arma de optimización que lleva el código de python a un desempeño similar a como si estuviera escrito en C o C++.

Para aprender más de esta potente herramienta, hace unos días celebramos un webinar con Alejandro Díaz Santos, un crack de la optimización de código en Python que nos ha enseñado desde cero a manejar Numba. Ahora queremos que tú aprendas y lo lleves a tus proyectos. Para esto empecemos por el principio, debes saber exactamente qué es.

¿Qué es Numba?

Numba es un compilador de código abierto para Python que se instala con el gestor de paquetes PIP. Se caracteriza por ser fácil de usar y el resultado de optimización es muy bueno. Está enfocado en funciones numéricas y permite acelerarlas ejecutándolas directamente en la GPU. Otra característica importante de esta herramienta es que genera código máquina usando el LLVM compiler. 

Numba puede compilar un gran subconjunto de código de Python centrado numéricamente, incluidas muchas funciones de NumPy. Además, Numba tiene soporte para la paralelización automática de bucles, generación de código acelerado por GPU y creación de ufuncs y devoluciones de llamada C.

Características de Python con Numba

Numba tiene tres características principales que muestran sus ventajas pero también evidencian algunos contras al momento de procesar funciones no numéricas.

  • Compilador de funciones: Numba solo optimiza funciones matemáticas, no optimiza código entero. Si agregaras un script completo, solo optimizaría las funciones matemáticas. Es importante que conozcas si hay funciones propias de Python que pueden resolver tus problemas ya que en algunas ocasiones estas son más rápidas que incluso si se pasan a código máquina.
  • Just-in-time: Numba, de manera inmediata transforma el código de Python a un código intermedio y luego a código máquina. Lo cual sirve para ir evaluando el desempeño a medida que vas escribiendo tu código y determinar cuándo es bueno usar Numba y cuándo no.
  • Funciones numéricas: ya te lo hemos dicho algunas veces, pero es importante que esto lo tengas muy presente: Numba solo procesa funciones numéricas como int, float o complex. Si Numba encuentra funciones no numéricas, dejará que se procesen normalmente como código en Python.

Otras alternativas 

Para optimizar el código enfocado en el procesamiento a través de GPU existen más opciones:

  • CUDA C/C++: Es la forma más flexible para programar en CUDA y permite acelerar aplicaciones programadas en C o C++.
  • pyCUDA: permite escribir bloques de código de C o C++ en Python. Es más eficiente que Numba, pero es necesario saber escribir en estos lenguajes.

¿Cómo funciona Python con Numba?

  1. Lo primero que hace es compilar un Kernel de CUDA para ejecutar las funciones en paralelo a las demás puestas en el script.
  2. Asigna inputs y outputs a la memoria GPU.
  3. Copia los inputs a la GPU.
  4. Ejecuta el Kernel de CUDA.
  5. Copia los resultados obtenidos de la GPU a la CPU.
  6. Devuelve el resultado como un numpy array.

¿Cómo instalar Numba?

La forma más fácil de instalar Numba y obtener actualizaciones es usando Anaconda.

[dt_code]$ conda install numba[/dt_code]

En la documentación oficial de Numba podrás encontrar información detallada del proceso.

Empieza a trabajar con Numba

Para que veas cómo funciona la herramienta aplicándola a casos prácticos, aquí te dejamos algunos ejercicios que Alejandro realizó con nosotros en el webinar.


Como puedes ver, Python es un lenguaje que ofrece diferentes alternativas para potenciar tus desarrollos, y si quieres empezar a picar código en él, te recomendamos nuestro Full Stack Jr. Bootcamp – Aprende a programar desde cero. Con cuatro meses de clases aprenderás desde cero a dominar este lenguaje y otras herramientas que ayudarán a construir tu camino como un Full Stack Developer. 

[email protected]