RE: [Python-es] Opciones de compilación

Hernán Martínez Foffani hernan en orgmf.com.ar
Jue Ago 26 16:11:59 CEST 2004


>>> A ver si me aclara alguien con la duda que tengo. Tengo un
>>> programita que está escuchando un socket para recibir datos. Pues
>>> simplemente se queda en la línea (Conexión, Dirección) =
>>> servidor.accept() y cuando recibe algo lo procesa. Si miro en el
>>> administrador de tareas, en procesos este programita me gasta 5.500
>>> KB cuando no hace nada, simplemente escucha. Es un poco raro por
>>> las 3 rutinas que tiene. Casi todos los procesos de la lista están
>>> en 1.000 KB. Hay alguna opción para compilarlo para que gaste
>>> menos. El programa ejecutable tiene 28 KB.
>>
>> ¿Qué sistema operativo? Windows? (por lo del administrador de tareas)
>> ¿Qué versión? ¿A qué otros procesos que usan 1 MB te refieres?
>> Los 5 megas y medio ¿cómo están calculados? ¿qué dato estás leyendo?
>> Cuando dices que el programa ejecutable tiene 28 KB, ¿a qué te
>> refieres? ¿Es un programa python? ¿Es un programa C? ¿Es un
>> ejecutable construido con algun instalador o programa tipo py2exe o
>> similar?
>> Por último, ¿es por curiosidad o realmente necesitas ahorrarte esos
>> 4 MB?

> Por supuesto que la intención no era de ahorrar los 4 megas sino que
> lo que me importaba era que el programa sea bien optimizado. El
> programa está hecho en Python, compilado con py2exe y corre bajo
> Windows. El proceso lo veo por el administrador de tareas y el tamaño
> lo leo de la columna "Uso de memoria.". Vamos no si esto es normal o
> no, pero me gustaría saber si este uso de memoria se puede reducir.

Por el tamaño que dices que tiene el ejecutable lo que ha generado
el py2exe es solo un programa lanzador del proceso que, quizás,
además incluya los .pyc.  Alguien con mas experiencia en py2exe te
podrá dar mas detalles.  Lo que sí es seguro es que el exe ni siquiera
tenga el runtime de python por lo que apostaría que en tu directorio
de instalacion de la aplicacion tengas algun archivo pythonXXX.dll
siendo las XXX la version del python.

Una forma rápida de saber si puedes reducir el tamaño usado es
hacer una aplicacion que no haga nada (solo un sleep lo
suficientemente largo para que puedas medir el uso de recursos)
y compararlo con tu aplicacion.  La de prueba las debes generar
de la misma forma que tu aplicacion para que la comparacion
sea valida.  Dudo que encuentres muchas diferencias...

Considerando que las bibliotecas del python que se distribuyen
para windows están enlazadas dinámicamente dudo que puedas
ahorrar mucho recompilandolo.  Quizás logres algo si quitaras
soporte para unicode.... je... así también "solucionarías" los
problemas de los acentos... jeje...

Lo que lees en la columna "Uso de memoria" es el tamaño del
conjunto de trabajo ("working set").  En realidad los procesos
consumen mucho mas.  El resto está paginado.  En los SO
modernos que haya paginación no significa que estés corta de
memoria física.  Tendrás paginación SIEMPRE.
Por otro lado es posible que tu proceso en algun momento
determinado *no* esté usando todo el conjunto de trabajo:
dependerá de quién y cómo libera memoria un proceso y quién,
cómo y cuándo reclama memoria otro proceso o el sistema.
Ten en cuenta que los SOs son por lo general muy vagos.

Como recomendación general te diría que no optimices por
adelantado.

> Por cierto mencionabas de otros instaladores. ¿Conoces algunos?

La verdad, no. ;-)
Se que por ahi anda el installer de Gordon McMillan (o algo así)
pero nunca use ninguno de ellos.




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