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

Gestión de modelos para los modelos afinados de LoRA utilizando Llama2 y Amazon SageMaker

En la era del big data y la inteligencia artificial, las empresas buscan constantemente formas de utilizar estas tecn...

Inteligencia Artificial

Cómo los científicos están descifrando códigos históricos para revelar secretos perdidos

El proyecto DECRYPT, una colaboración entre lingüistas y científicos de la computación, tiene como objetivo automatiz...

Inteligencia Artificial

Un nuevo estudio de IA desvela los secretos de las baterías de ion de litio a través de la visión por computadora

Miles de partículas minúsculas empaquetadas densamente en los electrodos de las baterías de iones de litio recargable...

Inteligencia Artificial

Rompiendo barreras en la segmentación de instancias en 3D Un enfoque de mundo abierto con mejora de pseudo-etiquetado y escenarios realistas

Al proporcionar clasificación y etiquetado semántico a nivel de instancia de objeto, la segmentación semántica de ins...

Inteligencia Artificial

Científicos simulan la guerra de las hormigas utilizando el juego de ordenador Age of Empires

Científicos utilizaron el videojuego Age of Empires para simular la guerra de hormigas, en un esfuerzo por erradicar ...