"preocupación" está fuera de lugar, pero si el programa resulta ser lento, consume más memoria de lo esperado, o tienen extraño inexplicable pausas, la causa es, en efecto probable que sea en esos bucles de referencia de basura - que necesitan para ser basura recogida por un procedimiento diferente que (acíclicos) gráficos de referencia "normales", y que la recolección es ocasional y puede ser lento si usted tiene un montón de objetos atados en tales bucles (la colección de basura cíclica también se inhibe si un objeto en el bucle tiene un método especial __del__
).
Por lo tanto, los bucles de referencia no afectarán la corrección de su programa, pero pueden afectar su rendimiento y/o huella.
Si y cuando desea eliminar los bucles de referencias no deseados, a menudo puede utilizar el módulo weakref en la biblioteca estándar de Python.
Si y cuando desea ejercer un control más directo (o realizar la depuración, vea qué está sucediendo exactamente) con respecto a la recolección cíclica de basura, use el módulo gc en la biblioteca estándar de Python.
más 1 para la nota sobre '__del__'. Si los destructores de objetos tienen efectos secundarios, es posible que desee pensar en referencias cíclicas (y cuando las cosas se destruyan) con más cuidado. – speedplane