¿Qué son los archivos PYC de Python?

Por g.s. jackson
¿Qué son los archivos PYC de Python?
Ryan McVay/Photodisc/Getty Images

El lenguaje de programación Python sirve un propósito general para el desarrollo de software de escritorio y web. Parte de la flexibilidad que tiene Python viene del hecho de que se "interpreta", o ejecuta por un intérprete que existe en múltiples plataformas diferentes. Esto difiere de un programa de "compilado" que sólo puede ejecutarse en el sistema que lo recopiló. Sin embargo, el intérprete de Python puede compilar algunos paquetes incluidos en un programa de Python cuando se ejecuta el programa, aumentando la velocidad y la eficiencia de la ejecución. Para entender cómo se produce este aumento de la velocidad, el programador debe entender la diferencia entre código compilado e interpretado, y cómo funcionan en el intérprete de Python.

Lenguajes compilados

Estos lenguajes de programación son "compilados" por el programador antes de ejecutar el código. El proceso de elaboración consiste en traducir el código fuente en comandos de lectura informática para su ejecución. Por ejemplo, el lenguaje de programación C, un lenguaje compilado, utiliza una cierta sintaxis "legible" que los programadores utilizan cuando ingresan el código. Antes de que el código pueda convertirse en un programa, el programador compila el código "fuente" en lenguaje de máquina que el sistema comprende. Este proceso sólo ocurre una vez: después de que se compila el programa, se puede ejecutar cualquier número de veces.

Lenguajes interpretados

Ademas de los lenguajes compilados hay otros que son "interpretados". En lugar de someterse a un proceso de compilación que convierte el programa en lenguaje informático, y lo lanza como un programa listo para ejecutar, un lenguaje interpretado se ejecuta a través de un "intérprete." Lo que esto significa es que el programa se ejecutará directamente desde el código fuente, una línea a la vez. Cada vez que el programa se ejecuta, lo hace a través del intérprete, y el intérprete ejecuta el código en el sistema.

Interpretado contra compilado

Cada lenguaje tiene sus ventajas y desventajas. El código compilado se convierte a un formato más fácilmente leído por el sistema, aumentando la velocidad de ejecución y mejorando la eficiencia de la memoria. Sin embargo, el código compilado sólo se ejecuta en el sistema operativo que lo recopiló. Por ejemplo, el código compilado en Windows no funcionará en una Mac. En contraste, los lenguajes interpretados son multiplataforma, lo que significa que un lenguaje interpretado puede funcionar en muchos sistemas operativos que utilizan el mismo intérprete. Por otra parte, el lenguaje interpretado no tiene que hacer frente a muchos problemas de programación asociados con la programación con lenguajes compilados, como la gestión de memoria, lo que hace el desarrollo más fácil y más rápido. Sin embargo, debido a que un programa en un lenguaje interpretado tiene que ser interpretado línea por línea, su tiempo de ejecución es más lento y su uso de memoria es superior.

Archivos PYC de Pythin

Python es un lenguaje interpretado, lo que significa que cada programa se ejecuta a través del intérprete de Python. Además, cuando el programa "importa" otro módulo de Python para usar en el código utilizando la palabra clave "importación", también interpreta el archivo de código fuente del módulo. Así, por ejemplo, un programador que desea utilizar las funciones de un módulo matemático lo importaría, y sería interpretado junto con el programa. Sin embargo, cuando el programador importa un módulo, también crea una versión compilada, o "ya interpretado", de ese módulo, que tiene una extensión "pyc.". Esto significa que después de la primera ejecución, el programa Python utilizará el .pyc compilado al importar.

Ventajas de los archivos PYC

Las ventajas de tener archivos PYC son las mismas que las de tener un lenguaje compilado en general: son más rápidos y mejoran el tiempo de ejecución. Mientras que el código fuente del módulo no cambia, el intérprete de Python no va a interpretar el módulo cada vez que un programa se ejecuta. Más bien, se usará la versión "lista" del código. Esto disminuye el tiempo utilizado por la interpretación continua de los mismos archivos de origen.