Me enfrento al problema de las pérdidas de memoria usando pandas
biblioteca en python. Creo objetos pandas.dataframe
en mi clase y tengo un método que cambia el tamaño del marco de datos de acuerdo con mis condiciones. Después de cambiar el tamaño del marco de datos y crear un nuevo objeto pandas reescribo pandas.dataframe original en mi clase. Pero el uso de memoria es muy alto incluso después de una reducción significativa de la tabla inicial. Parte del código de ejemplo corto (que no he escrito gestor de procesos, veo administrador de tareas):Pandas: ¿dónde está la fuga de memoria aquí?
import time, string, pandas, numpy, gc
class temp_class():
def __init__(self, nrow = 1000000, ncol = 4, timetest = 5):
self.nrow = nrow
self.ncol = ncol
self.timetest = timetest
def createDataFrame(self):
print('Check memory before dataframe creating')
time.sleep(self.timetest)
self.df = pandas.DataFrame(numpy.random.randn(self.nrow, self.ncol),
index = numpy.random.randn(self.nrow), columns = list(string.letters[0:self.ncol]))
print('Check memory after dataFrame creating')
time.sleep(self.timetest)
def changeSize(self, from_ = 0, to_ = 100):
df_new = self.df[from_:to_].copy()
print('Check memory after changing size')
time.sleep(self.timetest)
print('Check memory after deleting initial pandas object')
del self.df
time.sleep(self.timetest)
print('Check memory after deleting copy of reduced pandas object')
del df_new
gc.collect()
time.sleep(self.timetest)
if __name__== '__main__':
a = temp_class()
a.createDataFrame()
a.changeSize()
Antes de la creación de trama de datos que tengo aprox. 15 MB de uso de la memoria
Después de crear - 67MB
Después de cambiar el tamaño de - 67 mb
Después de la eliminación de trama de datos original - 35MB
Después de eliminar reducida mesa - 31 mb.
16 mb?
Uso python 2.7.2 (x32) en la máquina con Windows 7 (x64), pandas. versión es 0.7.3. numpy versión 1.6.1 es
Así es como funciona la asignación de memoria de Python. Probablemente no haya pérdida de memoria. – jozzas