Potencia tu código en Python con extensiones de Rust

Potencia tu código en Python con Rust

Aumentar la velocidad por órdenes de magnitud y mejorar la seguridad del código

Imagen del autor, generada utilizando DALLE

Como la mayoría de ustedes ya saben, Python es un lenguaje de programación de propósito general optimizado para la simplicidad y facilidad de uso. Si bien es una gran herramienta para tareas ligeras, la velocidad de ejecución del código puede convertirse rápidamente en un gran obstáculo en sus programas.

En este artículo, discutiremos por qué Python es tan lento en comparación con otros lenguajes de programación. Luego, veremos cómo escribir una extensión básica de Rust para Python y compararemos su rendimiento con una implementación nativa de Python.

Por qué Python es lento

Antes de comenzar, me gustaría señalar que los lenguajes de programación no son inherentemente rápidos o lentos: sus implementaciones lo son. Si quieres aprender sobre la diferencia entre un lenguaje y su implementación, consulta este artículo:

El mito del lenguaje de programación más rápido

Un concepto erróneo común en la programación que debe ser erradicado

betterprogramming.pub

En primer lugar, Python es de tipado dinámico, lo que significa que los tipos de variables solo se conocen en tiempo de ejecución, y no en tiempo de compilación. Si bien esta elección de diseño permite un código más flexible, el intérprete de Python no puede hacer suposiciones sobre qué son sus variables y su tamaño. Como resultado, no puede realizar optimizaciones como lo haría un compilador estático.

Otra elección de diseño que hace que Python sea más lento que otras alternativas es el infame GIL (Global Interpreter Lock). El GIL es un bloqueo de mutex que permite que solo un hilo se ejecute en un momento dado. El GIL originalmente se creó para garantizar la seguridad de los hilos, pero ha encontrado una gran resistencia por parte de los desarrolladores de aplicaciones con subprocesos múltiples.

Además, el código de Python se ejecuta a través de una máquina virtual en lugar de ejecutarse directamente en la CPU. Esta capa adicional de abstracción agrega una sobrecarga significativa de ejecución en comparación con los lenguajes compilados estáticamente.

Además, los objetos de Python se tratan internamente como diccionarios (o hashmaps) y sus atributos (propiedades y métodos, accesibles mediante el operador punto) generalmente no se acceden a través de un desplazamiento de memoria, sino…

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Enfoque de IA produce un perro robótico 'inteligente atléticamente

Un equipo internacional de investigadores ha desarrollado un algoritmo basado en visión que permite a los robots cuad...

Aprendizaje Automático

Tienes que ajustar esas dimensiones DreamEditor es un modelo de IA que edita escenas en 3D utilizando indicaciones de texto.

El dominio de visión por computadora 3D se ha inundado de NeRF en los últimos años. Surgieron como una técnica innova...

Inteligencia Artificial

Implementa modelos de ML construidos en Amazon SageMaker Canvas en los puntos finales de tiempo real de Amazon SageMaker.

Amazon SageMaker Canvas ahora admite implementar modelos de aprendizaje automático (ML) en puntos finales de inferenc...