Me sorprendió que sys.getsizeof(10000*[x])
sea 40036 independientemente de x: 0, "a", 1000 * "a", {}.
¿Hay un deep_getsizeof
que considere correctamente los elementos que comparten memoria?
(La pregunta vino de mirar las tablas de base de datos en memoria como gama (1000000) -> nombres de provincias: lista o dict?)
(Python 2.6.4 es en un Mac PPC.)Python deep getsizeof list with contents?
Agregado: 10000 * ["Mississippi"] es 10000 apuntadores a un "Mississippi", como varias personas han señalado. Pruebe esto:
nstates = [AlabamatoWyoming() for j in xrange(N)]
donde AlabamatoWyoming() -> una cadena "Alabama" .. "Wyoming". ¿Qué es deep_getsizeof (nstates)?
(¿Cómo podemos decir
- un deep_getsizeof adecuada:? Difícil, ~ gc trazador
- estimación a partir de memoria virtual
- dentro de los conocimientos de la aplicación de pitón
- conjetura
. Agregado 25jan: ver también when-does-python-allocate-new-memory-for-identical-strings
Gracias Pär, lo intentaré; muestra cuán difícil es el problema ¿Alguno de sus compañeros de trabajo tiene una breve nota sobre cómo guardar la memoria en Python, que respondería, por ejemplo, a Python? rango (1000000) -> nombres de las provincias: ¿list o dict? – denis
vínculo muerto allí – MohamedEzz