tutorial site para framework fra español python garbage-collection del

site - Python del declaración



framework django para python (3)

Llamando del en una variable en Python. ¿Esto libera la memoria asignada de inmediato o sigue esperando que el recolector de basura se reúna? Al igual que en java, llamar explícitamente a del no tiene ningún efecto sobre cuándo se liberará la memoria.


"La eliminación de un nombre elimina el enlace de ese nombre del espacio de nombres local o global". Ni mas ni menos. No le hace nada al objeto al que apunta el nombre, excepto que disminuye su refcount, y si refcount no es cero, el objeto no se recopilará incluso cuando se ejecuta GC.


Además, la declaración del delta parece ser un poco más rápida que la asignación de Ninguno (similar al estilo de Java que asigna nulo a una variable para liberar su memoria ...).

Comparar:

import time, math def measure_del(): start = time.time() for i in range(0,int(math.pow(10,8))): a = "123" del a # <--- !!! end = time.time() print(end-start) def measure_none(): start = time.time() for i in range(0,int(math.pow(10,8))): a = "123" a = None # <--- !!! end = time.time() print(end-start)

resultados en (ejecutándose en idle3.4):

>>> measure_del() 3.9930295944213867 >>> measure_del() 3.7402305603027344 >>> measure_del() 3.8423104286193848 >>> measure_del() 3.753770351409912 >>> measure_del() 3.7772741317749023 >>> measure_del() 3.815058946609497 >>> measure_none() 4.052351236343384 >>> measure_none() 4.130320072174072 >>> measure_none() 4.082390069961548 >>> measure_none() 4.100180625915527 >>> measure_none() 4.071730375289917 >>> measure_none() 4.136169672012329


La sentencia del no recupera la memoria. Elimina una referencia, lo que disminuye el recuento de referencia en el valor. Si el conteo es cero, la memoria puede ser reclamada. CPython recuperará la memoria de inmediato, no es necesario esperar a que se ejecute el recolector de basura.

De hecho, el recolector de basura solo es necesario para recuperar estructuras cíclicas.

Como Waleed Khan dice en su comentario, la administración de memoria de Python simplemente funciona, no tiene que preocuparse por eso.