Pandas: ¿dónde está la pérdida de memoria aquí?
Me enfrento al problema de las fugas de memoria usandopandas
biblioteca enpitón. yo creopandas.dataframe
Los objetos de mi clase y yo tengo un método que cambia el tamaño del marco de datos según mis condiciones. Después de cambiar el tamaño del marco de datos y de crear un nuevo objeto de pandas, reescribo pandas.dataframe original en mi clase. Pero el uso de la memoria es muy alto incluso después de reducir significativamente la tabla inicial. Algún código para el ejemplo corto (no escribí el administrador de procesos, vea el administrador de tareas):
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 crear dataframe tengo aprox. 15 mb de uso de memoria
Después de crear - 67mb
Después de cambiar de tamaño - 67 mb
Después de eliminar el marco de datos original - 35 mb
Después de eliminar la tabla reducida - 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. adormecidoversión es 1.6.1