11.07.2015 Views

versión color - PET: Python Entre Todos - Python Argentina

versión color - PET: Python Entre Todos - Python Argentina

versión color - PET: Python Entre Todos - Python Argentina

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Arenas 81Estructura de una lista libresLas listas libres son muy parecidas a un pool, pero no se mantiene un arreglo deobjetos, sino simplemente la lista enlazada de objetos libres. Cuando se destruyeun objeto, se puede decidir ubicarlo en la lista libre en vez de efectivamenteliberar la memoria, para poder aprovecharlo y reutilizarlo más tarde.Esta idea de listas libres ahorra muchas llamadas a malloc, y es particularmente útilpara cadenas, listas y tuplas, que son objetos de tamaño variable muy intensamenteutilizados en <strong>Python</strong> y donde un pool no sería una idea práctica. También son la razónprincipal por la cual <strong>Python</strong> es particularmente sensible a la fragmentación dememoria, ya vamos a ver por qué.Nótese que también los frames utilizan listas libres. Los frames son objetos, tambiénde tamaño variable (pues necesitan una pila, espacio temporal para las variables yobjetos temporales que nuestro código genere), también muy intensamente utilizadosen <strong>Python</strong> (se “crea” uno cada vez que se hace una llamada a una función). Las listaslibres de frames son una optimización muy importante (ahorran mucho tiempo decreación puesto que los frames son costosos de crear), pero también contribuyen a lafragmentación de memoria (como toda lista libre).Una cosa importante a recordar de las listas libres en <strong>Python</strong> es que la decisión de sidestruir un objeto o ubicarlo en la lista libre se hace al momento de dereferenciarlo(cuando su conteo de referencias llega a cero). Una vez ahí, ahí permanece hasta quesea reutilizado. <strong>Python</strong>, para tomar esta decisión, tiene una serie de límites - Xframes, Y tuplas de tamaño 1, Z tuplas de tamaño 2, W cadenas, etc… (el límite sueleser 100 en cada caso)ArenasOk… y el resto de los objetos. ¿Usan malloc?{footer} — http://revista.python.org.ar

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!