[pyar] weakref.WeakValueDictionary
Andres Riancho
andres.riancho en gmail.com
Jue Ene 10 14:17:17 ART 2013
Lista,
Estoy intentando hacer que un objeto (en este caso poc) sea
eliminado de la memoria por el GC cuando no haya mas referencias
externas al mismo. Mi codigo tiene actualmente un diccionario,
self.handlers, que tiene punteros a varios metodos; entonces cuando
externamente no apunto mas a una instancia de poc todavia quedan
referencias a ese objeto desde el diccionario.
Para solucionar esto se me ocurrio utilizar
weakref.WeakValueDictionary; pero se ve que algo estoy haciendo mal,
pero QUE? Les dejo una prueba de concepto que demuestra lo que quiero
hacer y crashea :(
"""
import weakref
class poc(object):
def __init__(self, dict_impl):
self.handlers = dict_impl({'URL': self.handle_url})
def handle(self, method, obj):
self.handlers[method](obj)
def handle_url(self, obj):
print obj
if __name__ == '__main__':
dict_poc = poc(dict)
dict_poc.handle('URL', 1) # funciona, imprime 1
weak_poc = poc(weakref.WeakValueDictionary)
weak_poc.handle('URL', 1) # crash
"""
Saludos,
--
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3
More information about the pyar
mailing list