[pyar] De imports, multiprocessing y memoria utilizada
Andres Riancho
andres.riancho en gmail.com
Sab Abr 28 21:37:36 ART 2012
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. Eso me molesto e intente
encontrar una manera de verificar que el modulo pueda ser
correctamente cargado pero sin que luego queden rastros en memoria.
Entonces se me ocurrio cargar el modulo en un proceso distinto, para
que luego al morir el proceso se libere esa memoria:
"""
from multiprocessing import Pool
def _module_load_worker(module_name):
try:
__import__(module_name)
except:
return False
else:
return True
def lazy_load(module_name):
pool = Pool(processes=1)
result = pool.apply_async(_module_load_worker, [module_name])
return result.get(timeout=5)
"""
Lamentablemente esto no funciona, obtengo siempre algo como lo
siguiente (sin importar si le doy mas o menos timeout):
"""
File "/home/xyz/workspace/w3af/core/controllers/dependency_check/lazy_load.py",
line 38, in lazy_load
return result.get(timeout=5)
File "/usr/lib/python2.6/multiprocessing/pool.py", line 418, in get
raise TimeoutError
multiprocessing.TimeoutError
"""
Hice varios cambios... probando cosas como "import sys" ,
"__import__('sys')" , etc. y nada funciona, siempre tengo timeout.
Entonces... la primer pregunta seria porque no es posible hacer un
import dentro de un proceso de multiprocessing? La segunda es... en
caso de que sea imposible por alguna limitacion tecnica... como puedo
lograr mi objetivo inicial de "verificar que un import va a ser
exitoso y que la dependencia esta instalada sin que nada quede en
memoria".
Gracias!
[0] http://w3af.org/
[1] https://sourceforge.net/apps/trac/w3af/browser/trunk/core/controllers/misc/dependencyCheck.py
Saludos,
--
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
More information about the pyar
mailing list