Tôi gặp sự cố rò rỉ bộ nhớ bằng cách sử dụng pandas
thư viện ở python. Tôi tạo các đối tượng pandas.dataframe
trong lớp của mình và tôi có phương thức, thay đổi kích thước khung dữ liệu theo các điều kiện của tôi. Sau khi thay đổi kích thước dataframe và tạo đối tượng gấu trúc mới, tôi viết lại pandas.dataframe gốc trong lớp của mình. Nhưng sử dụng bộ nhớ rất cao ngay cả sau khi giảm đáng kể bảng ban đầu. Một số mã ví dụ ngắn (tôi đã không viết quá trình quản lý, xem task manager):Pandas: bộ nhớ bị rò rỉ ở đâu?
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()
Trước dataframe tạo Tôi có xấp xỉ. 15 mb sử dụng bộ nhớ
Sau khi tạo - 67MB
Sau khi thay đổi kích thước - 67 mb
Sau khi xóa dataframe gốc - 35MB
Sau khi xóa giảm bảng - 31 mb.
16 mb?
Tôi sử dụng trăn 2.7.2 (x32) trên máy tính Windows 7 (x64), gấu trúc. phiên bản là 0.7.3. numpy. phiên bản là 1.6.1
Đây là cách phân bổ bộ nhớ của Python hoạt động. Có lẽ không có rò rỉ bộ nhớ. – jozzas