[Py-MAD] A propósito de mi charla sobre "memory leaks"

Jesus Cea jcea at jcea.es
Mon Dec 23 01:04:00 CET 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

He comentado este tema porque salió precisamente en mi charla de
"Memory Leaks", Andrey hizo un comentario al respecto, y lo investigué
un poco. Las cosas mejorarán bastante en Python 3.4, en cuanto a
ciclos, leaks, etc. Entre este PEP y el módulo "tracemalloc"...

Más, abajo...

On 21/12/13 07:42, J. Javier Maestro wrote:
> Así que sí, __del__ será seguro y se arreglará y/o romperá 
> (potencialmente) mucho código Python existente.

__del__ se llama cuando se borra un objeto y éste no forma parte de un
ciclo. Eso de siempre.

La diferencia ahora es que también se llamará cuando forma parte de
ciclos. Pero solo se llama cuando ese objeto es "basura". Si algún
programa falla por eso, quiero verlo, porque la únicas referencias que
puede haber a ese objeto son, precisamente, otros objetos de su ciclo,
Y TODO él es basura.

El problema que teníamos antes era que llamar a un "__del__" cuando
hay un ciclo es problemático porque... ¿y si llamamos al "__del__"
cuando ya hemos eliminado la mitad de los objetos del ciclo, y ese
método intenta acceder a ellos?. Y si tenemos "__del__" en varios
objetos del ciclo, ¿en qué orden se llaman?.

Lo que se hará en Python 3.4 es llamar primero a todos los "__del__"
del ciclo, sin haber borrado nada antes, y LUEGO, revisar que los
objetos siguen siendo basura (no se han "resucitado") y, si es así,
eliminar los objetos "de verdad".

A mí me parece bastante seguro, y si algo se rompe, será código
verdaderamente patológico que quiero ver. O, tal vez, no ver :-).

- -- 
Jesús Cea Avión                         _/_/      _/_/_/        _/_/_/
jcea at jcea.es - http://www.jcea.es/     _/_/    _/_/  _/_/    _/_/  _/_/
Twitter: @jcea                        _/_/    _/_/          _/_/_/_/_/
jabber / xmpp:jcea at jabber.org  _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.15 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQCVAwUBUrd98Jlgi5GaxT1NAQJyQAP+PJOFTUNxuWomfMYncT3jfdVGQr+tw+yk
0goPTPr3iex4lQeG7OOyQt7XxKzAfyT9+MVE+7MA8b+Rn4fB1wg9L/ZAY9yv1bKL
dl7xVMRDt3+XtDzuPiGvRF40ik4cpgrBddaWuHkgOA/wCBOPCvmEHh1muYoWi9zq
3wR1Pitkik4=
=KbuH
-----END PGP SIGNATURE-----


More information about the Madrid mailing list