Articles of gestión de memoria

Caché inteligente de objetos caros en Python

Tengo un directorio de imágenes en orden. Por lo general, mi código utilizará datos de un subconjunto secuencial de imágenes (por ejemplo, imágenes 5-10), y las opciones ingenuas para acceder a estas son: Cree un objeto contenedor con un método que cargue la imagen cuando sea necesario y lea mis datos (por ejemplo, un valor […]

Grupo de objetos bajo restricciones de memoria

Utilizamos una serie de objetos grandes. Idealmente, nos gustaría que todos estuvieran disponibles permanentemente para el código del cliente, pero no caben en la memoria física de una sola vez. Entonces, cuando nos acerquemos a los límites de la memoria, necesitaremos destruir algunos de los objetos en el grupo (probablemente, destruiremos el objeto menos usado […]

Fugas de memoria de Python?

Estoy escribiendo una extensión de python que parece estar perdiendo memoria. Estoy tratando de averiguar el origen del problema usando valgrind. Sin embargo, parece que Python está perdiendo memoria de acuerdo con valgrind. Usando el siguiente script simple: hola.py print “Hello World!” y haciendo > valgrind –tool=memcheck python ./hello.py (…) ==7937== ERROR SUMMARY: 580 errors […]

Pérdida de memoria en Python Twisted: ¿dónde está?

Tengo un servidor Twisted bajo carga. Cuando el servidor está bajo carga, el uso de la memoria aumenta y nunca se reclama (incluso cuando no hay más clientes). La próxima vez que se cargue, el uso de la memoria aumenta nuevamente. Aquí hay una instantánea de la situación en ese punto: La memoria RSS es […]

Enteros cortos en Python

Python asigna enteros automáticamente en función de la architecture del sistema subyacente. Desafortunadamente tengo un gran conjunto de datos que necesita ser cargado completamente en la memoria. Entonces, ¿hay una manera de obligar a Python a usar solo 2 bytes para algunos enteros (equivalente a C ++ ‘short’)?

Confundido acerca de la identificación de Python ()

Puedo entender la siguiente definición: Cada objeto tiene una identidad, un tipo y un valor. La identidad de un objeto nunca cambia una vez que ha sido creado; usted puede pensar en ello como la dirección del objeto en la memoria. El operador is compara la identidad de dos objetos; La función id() devuelve un […]

Archivo de datos a la matriz está usando una gran cantidad de memoria

Estoy tomando un archivo de texto grande con valores separados por tabulaciones y los agrego a una matriz. Cuando ejecuto mi código en un archivo de 32 Mb, el consumo de memoria de Python pasa por el techo; utilizando alrededor de 500 Mb de RAM. Necesito poder ejecutar este código para un archivo de 2 […]

¿Cuál es la diferencia entre id (obj) y ctypes.addressof (obj) en CPython

Digamos que defino la siguiente variable usando el módulo ctypes i = c_int(4) y luego trato de averiguar la dirección de memoria de i usando: id(i) o ctypes.addressof(i) Que, por el momento, rinden diferentes valores. ¿Porqué es eso?

Aprovechando la “Copia en escritura” para copiar datos a procesos de trabajo de multiprocesamiento.Pool ()

Tengo un poco de código Python multiprocessing que se ve un poco así: import time from multiprocessing import Pool import numpy as np class MyClass(object): def __init__(self): self.myAttribute = np.zeros(100000000) # basically a big memory struct def my_multithreaded_analysis(self): arg_lists = [(self, i) for i in range(10)] pool = Pool(processes=10) result = pool.map(call_method, arg_lists) print result […]

Borrar memoria utilizada por rpy2

¿Cómo puedo borrar los objetos (y la memoria que ocupan) creados a través de rpy? import rpy2.robjects as r a = rr(‘a = matrix(NA, 2000000, 50)’) del a #if I do this, there is no change in the amount of memory used rr(‘rm(list=(ls(all=TRUE)))’) # Same here, the objects disappear, but the memory is still used […]