Мне постоянно нужно загружать большие наборы данных и построить их. Здесь я столкнулся с проблемой с использованием потребления Python и RAM при построении данных < /p>
Вот пример двух кодов, сначала в Matlab и использование RAM в каждой точке, а затем реализация в Python. Цель состоит в том, чтобы прочитать несколько наборов данных HDF5, сшить их вместе и сюжет.
Код: Выделить всё
filename = dir('*00.hdf5');
[~, idx] = max([filename.datenum]);
filename = filename(idx).name;
dLim = [0 1];
Data = [];
lgth = cellstr(num2str((dLim(1):dLim(2))', '%04d'));
date = filename(1:17);
for i = 1:length(lgth)
filename1 = [date ,sprintf('.00%s', lgth{i}),'.hdf5'];
intD = double(h5read(filename1,'/data'));
Data = [Data; intD];
end
< /code>
Окончательный размер Data = 58976577x4 RAM Использование = 3662 МБ < /p>
после графика с Matlab < /p>
ram usage = 7322 Mb. < /p>
python: < /p>
filenames = glob.glob('*00.hdf5')
filename = max(filenames, key=os.path.getmtime)
filename = os.path.basename(filename)
dLim = [0, 1]
lgth = [f"{i:04d}" for i in range(dLim[0], dLim[1] + 1)]
date = filename[:17]
Data = None
for i in range(len(dLim)):
filename1 = f"{date}.00{lgth[i]}.hdf5"
with h5py.File(filename1, 'r') as f:
intD = np.array(f['/data']).T
if Data is None:
Data = intD
else:
Data = np.vstack((Data, intD))
< /code>
Окончательный размер Data = 58976577x4 < /p>
Использование оперативной памяти = 2280 мб < /p>
После построения построения с помощью Matplotlib: < /p>
from matplotlib import pyplot as plt
plt.plot(Data)
Сводка:
Потребление оперативной памяти Matlab:
Окончательный размер данных = 58976577x4
ram usage = 3662 mb
ram usage = 3662 mb
ram usage = 3662 mb
plot:
RAM usage = 7322 MB
Python (Spyder) RAM consumption:
Final size of Data = 58976577x4
RAM usage = 2280 MB
After plot with matplotlib: < /p>
Использование оперативной памяти = 11000+ МБ. Становится едва отзывчивым. < /P>
Что я делаю не так? Это даже не самый большой набор данных, с которым я работал раньше, и я застрял ... Я могу понизить данные и уменьшить нагрузку, но это не главное. Это можно сделать и в Matlab ...
Подробнее здесь: https://stackoverflow.com/questions/788 ... onsumption