Desimportar modulos
Hern=?ISO-8859-1?Q?=E1n_Mart=ED?=nez Foffani
hernan en orgmf.com.ar
Vie Sep 26 19:20:32 CEST 2003
>En principio, un módulo es un objeto referenciado desde otro módulo
>(probablemente el programa principal). Creo que primero tienes que
>borrar la referencia, y después quitarlo de sys.modules:
>
>import mx.DateTime
>del mx
>import sys
>del sys.modules['mx']
>del sys.modules['mx.DateTime']
>
>Cuando el garbage collector pasa por encima, liberará la memoria
>correspondiente.
pero además hay que considerar si es una biblioteca externa o no
y si el interprete está "linkado" con las extensiones en forma
estática o dinámica, si el módulo externo libera recursos, si
el sistema operativo "baja" las librerías dinámicas
inmediatamente o no, etc.
>Nota final: No sé si importar módulos consume mucha memoria. Más
>probable es que el módulo correspondiente no gestione bien su memoria,
>con lo que todo lo de arriba es innecesario.
me parece que el uso mas corriente de desimportar modulos es para
evitar "congestiones" de nombres.
ejemplo. y.py contiene:
# exporto las clases/funciones del modulo y
__all__ = ["f_y"]
# me traigo clases/funciones del modulo x
from x import *
# importo x solo para acceder a __all__
import x
# ahora exporto todo lo que tenia x
__all__.extend(x.__all__)
# borro x porque ya accedi a su __all__
del x
# la implementacion de lo del modulo y.
def f_y():
pass
saludos,
-H.
Más información sobre la lista de distribución Python-es