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