[pyar] De imports, multiprocessing y memoria utilizada

Alejandro Santos listas en alejolp.com
Sab Abr 28 21:55:58 ART 2012


2012/4/28 Andres Riancho <andres.riancho en gmail.com>:
> Lista,
>
>    Analizando el uso de memoria de w3af [0] me di cuenta que al
> iniciar estaba cargando en memoria todos los modulos relacionados con
> las dependencias del programa [1], sin importar si luego realmente se
> utilizaban o no durante esa ejecucion.
>

Andrés,

Lo estándar es usar un mecanismo conocido como "lazy import", y por
ejemplo en el código de Mercurial se llama "demandimport".

http://selenic.com/hg/file/be786c5ac0a8/mercurial/demandimport.py

Es un hook a la funcion __import__ interna de Python. Al momento de
importar el modulo lo deja como un proxy, y recien levanta el modulo
en memoria (y hace el import de verdad) cuando se usa por primera vez
dicho modulo. Un efecto lateral interesante es que puede llegar a
resolverte algun que otro import loop (no siempre).

Dentro de la stdlib de Python hay un modulo que hace lo mismo, pero no
logro encontrarlo ahora. Si mi memoria no me falla era email, mime o
alguno de esos.

-- 
Alejandro Santos



More information about the pyar mailing list