我面對內存泄漏的問題使用pandas
庫在python。我創建在我的課pandas.dataframe
對象,我有方法,根據我的條件的變化數據幀的大小。在改變數據框大小並創建新的熊貓對象之後,我在我的類中重寫了原始pandas.dataframe。但即使在初始表格顯着減少之後,內存使用率也非常高。短例如一些代碼(不是我寫的進程管理器,看任務管理器):熊貓:這裏的內存在哪裏泄漏?
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()
數據幀之前創建我有大約存儲器使用
的15 MB創建後 - 67 MB
刪除原始數據幀後 - - 35MB
刪除減少表後 - 31 MB 67MB
改變尺寸之後。
16 mb?
我在Windows 7(x64)機器上使用python 2.7.2(x32),pandas。 版本是0.7.3。 numpy的。 版本是1.6.1
這就是Python的內存分配工作原理。可能沒有內存泄漏。 – jozzas