Dudas iniciales

Andres Moya Andres.Moya en hispalinux.es
Mie Mayo 5 10:51:03 CEST 2004


El mié, 05-05-2004 a las 00:16, Fco. Javier Félix escribió:
> Soy nuevo en esto del Python, yo hasta ahora usaba el bash y el php par
> hacer los scripts, pero un amigo me convenció para que lo probase y
> desde luego no me ha defraudado lo que he visto por el momento. Pero
> tengo unas dudas como cualquiera que empieza.

Bienvenido al club, está claro que Python es un lenguaje que gusta a los
que lo prueban. Y estás en el sitio más apropiado para resolver tus
dudas :)


> 1º He visto que existe un compilador, como se usa?, que diferencia hay
> entre .pyc y .pyo?, existe un descompilador? que mejora la velocidad
> ofrece? 

Veamos, hay varios conceptos mezclados aquí. Vayamos por partes.

1) Python en realidad no es un lenguaje interpretado (como podía ser el
Basic). Lo que es es un lenguaje con máquina virtual, igual que Java.
Esto significa que el código fuente se compila, y se genera código
máquina, pero en vez de ser el de un procesador real como puede ser el
Pentium, lo genera para uno imaginario. Y luego hay un "runtime" que
interpreta (ahora sí) ese código máquina sobre cualquier procesador
real.

2) Lo anterior es transparente porque el entorno de python compila y
ejecuta con un sólo paso. Cuando escribes "python miscript.py", el
programa primero lee miscript.py, lo compila y genera miscript.pyc, que
es un ejecutable de la máquina virtual. A continuación lo lee y lo
ejecuta. Las siguientes veces, si ya está creado el .pyc, no hace falta
compilarlo otra vez.

3) Si lo llamas con "python -O miscript.py", en vez del .pyc genera un
.pyo, que es lo mismo, pero optimizado para que vaya más rápido y ocupe
menos.

4) Hay varios compiladores que generan código máquina real, pero
entonces se pierde la independencia de la plataforma. Por ejemplo, creo
que hay uno que le pasas miscript.py y te genera miscript.c, que puede
ser compilado con un compilador C normal y generar un .exe.

5) Esto mejora el rendimiento, pero no se suele usar mucho, lo más
típico es mezclar python con código C para las partes más críticas, o
usar un compilador especial como pyco, que optimiza el código máquina
virtual para que vaya mucho más rápido (de 2x a 100x, típicamente 4x), a
cambio de ocupar más memoria.

-- 
Andres Moya <Andres.Moya en hispalinux.es>

Contra la guerra global permanente.
Foro Social Mundial - Otro mundo es posible.

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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