Re: [Python-es] Gestión de memoria
heimy
ricardo.cardenes en gmail.com
Mar Mar 17 18:06:06 CET 2009
2009/3/17 Alezeia Gonzalez <Alezeia.Gonzalez en iit.upcomillas.es>:
>
> Hola a todos.
>
>
>
> El problema surge cuando se termina una iteración del bucle y voy a por la
> siguiente. Antes de volver a empezar, tengo que borrar todo lo que se ha
> construido dentro del bucle y sólo lo que se ha construido dentro del bucle.
> Entonces, utilizo el procedimiento “del” para eliminar el objeto “a”. De
> este modo, elimino “a” y “a.listaA”, pero no todos los objetos de la
> “claseB” que contiene “a.listaA”. Entonces, decido sobrecargar el
> procedimiento “del” y le digo que, cuando le pida que elimine “a”, además me
> borre cada elemento que contenga “a.listaA”. Y aquí está el problema. Me
> borra las referencias, pero no los objetos. Y no encuentro otra manera de
> acceder a los objetos que contiene “a.listaA”.
Si los objetos no se borran (que tampoco es automático, los objetos se
marcan para borrado y depende del garbage collector decidir cuánto
borrarlos), es que están siendo referenciados desde algún lado. Puedes
utilizar el módulo "gc" para investigar esas cosas. Sin saber de qué
se tratan ClaseA y ClaseB tampoco podemos ayudarte mucho, claro...
Por cierto, no deberías necesitar borrado explícito. Ej, si haces esto:
for x in .......:
a = ClaseA()
# Aquí insertamos en a.listaA los objetos de ClaseB
En cada bucle estás asignando a "a" una nueva instancia de ClaseA, lo
que significa que, a menos que hayas hecho algo raro, desaparece la
única referencia a la instancia anterior y por tanto pasa a ser
"destruible" de forma automática.
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es