Tecnología · GUÍA PRÁCTICA
Python resource_tracker y leaked shared_memory: asigna un solo dueño
Antes de cambiar track, registra creador, adjuntos y familias de tracker. Un solo proceso debe poseer unlink; prueba supervivencia y limpieza.

Una advertencia de resource_tracker no demuestra que falte close(). Dos familias independientes de Python pueden creer que poseen el mismo nombre POSIX; el primer tracker que termina puede borrar un nombre aún necesario.
La reparación es una decisión de propiedad. Registra versión, plataforma, ascendencia de procesos, creador, adjuntos y orden de cierre; asigna un solo dueño de unlink y después elige track.
Congela la topología de procesos
Registra sistema, versión de Python, start method, gestor, PID creador, PID de adjuntos, forma de lanzamiento y orden de salida. Terminales, árboles subprocess, contenedores y workers uWSGI pueden tener trackers distintos.
Guarda nombre exacto, create, track, cada close/unlink, advertencia original y si falló un attach posterior.
Separa handle, mapeo y vida del nombre
close() termina el acceso de este objeto. En POSIX, unlink() elimina el nombre; mapeos y recuperación final siguen reglas de plataforma. Un close local no prueba que el nombre siga disponible ni que tenga dueño de limpieza.
Crea una fila por nombre con creador, adjuntos activos, familia tracker, dueño duradero, responsabilidad de close y un solo responsable de unlink.
Elige dueño antes de track
En una familia multiprocessing, el tracker compartido puede limpiar salidas anómalas, pero la aplicación aún cierra handles y mantiene una ruta normal de unlink. No hagas unlink en cada worker.
Para procesos independientes o en otro lenguaje, usa un coordinador que viva más que los consumidores. En Python 3.13+, un adjunto no dueño usa track=False solo si otro actor posee la limpieza.
Mantén ramas por versión y plataforma
Antes de Python 3.13 no existe track público. No uses unregister privado ni monkey patches como arreglo general; actualiza, unifica la familia o usa un coordinador explícito.
Windows ignora track; un nombre POSIX puede persistir hasta unlink y el último unmap. Define aceptación distinta por plataforma.
Ejecuta una prueba de cierre doble
Inicia dueño y dos no dueños, escribe un marcador y detén un no dueño. Un nuevo adjunto debe abrir el mismo nombre y leer el marcador.
Detén el otro no dueño y finalmente el dueño con un solo unlink. Después, un attach nuevo debe fallar; prueba terminación anómala en un fixture desechable.
