Colsulta.-

Chema Cortes chemacortes en wanadoo.es
Lun Jun 3 09:56:30 CEST 2002


> Tenemos un archivo ejecutable ( con la sentencia #!...) en disco hecho con un editor, por ej. emacs, el cual a su vez importa un módulo, que también está en el disco. Sus extensiones son .py.
> 
> Según tengo entendido, al ejecutar el archivo, el intérprete de python lee el archivo del disco, lo pasa por su analizador (parser) tanto el archivo principal como el módulo ( ¿es correcto esto?) para convertirlo en 'código byte' en memoria (¿ o en disco?), y recién después de terminar este proceso, lo ejecuta. 
> La primera duda es si al ejecutarlo la primera vez, el 'código byte' (.pyc) ya queda guardado en el disco o no, tanto del prg. principal como del módulo.-

La compilación a bytecode se hace a medida que se ejecuta, y en memoria. Para evitar que se carge mucho la memoria, los módulos y demás código importado se suele almacenar en ficheros .pyc (ó .pyo si está optimizado). El proceso de compilación es casi despreciable en comparación con la ejecución del bytecode, por lo que casi no se nota el tener los ficheros compilados. Algo que se puede comprobar es que muchos instaladores compilan los módulos que instalan. La razón se debe a que un usuario no suele tener permisos para crear los ficheros .pyc donde están instalados los módulos, por lo que se aprovecha a crearlos durante la instalación.

> La segunda duda es si no es autoejecutable (sin #!...), y lo ejecutamos dentro de la IDE de python, se genera el .pyc ? 
> Que sucede si lo importamos dentro de la IDE?

Es indiferente quién lo importe. Es el intérprete de python quien generará los .pyc


> Bueno, lo que sí creo que entendí, es que el 'código byte' solamente aligera la carga del programa, al no tener que analizarlo, ya que la ejecución llevará el mismo tiempo no?

Como ya he dicho, no hay ganancia de velocidad. Tan sólo es un mecanismo para evitar sobrecargar la memoria.

-- 
Chema Cortes (chemacortes en wanadoo.es)
_____________________________________________________________________
No olvides nada. Recuerda los cumpleaños, tus citas, tus cenas románticas y 
todo lo que quieras usando la Agenda personal de Wanadoo.es, desde cualquier 
lugar conectado a Internet. Visítala en http://www.wanadoo.es/agenda






Más información sobre la lista de distribución Python-es