python con numba para optimizar tu código

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 Numba.

¿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. 

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 de Numba

Para optimizar el código enfocado en el procesamiento a través de GPU existen otras alternativas a Numba:

  • 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 Numba 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.

Empieza a trabajar con Numba

Para que veas cómo funciona Numba aplicándolo 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 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. 

Descarga el temario del Bootcamp Aprende a programar desde cero

Otras entradas que te pueden interesar:

¡Conoce nuestros Bootcamps!

Descarga el temario y descubre cómo en 6 meses podrás ser un Full Stack DevOps Bootcamp.

¿Quieres más información?