Я использую scipy loadmat для загрузки некоторых данных из файлов .mat.Тем не менее, я заметил, что он занимает много оперативной памяти ~ 1 Гб на файл .mat.Я знаю, что файлы .mat сжаты и т. Д., Но это все равно выглядело как много памяти, поэтому я попытался выяснить, почему это происходит.
Я сделал простой фрагмент кода и заметил, что без загрузки данных мое приложение занимает ~ 25 МБ ОЗУ, а при загрузке данных - около 1 ГБ ОЗУ.Более того, эта память не освобождается при выходе из функции, вызывающей scipy loadmat.Чтобы сделать пример кода еще более фиктивным, я попытался даже не брать результаты из scipy loadmat, а просто вызвать эту функцию, но даже тогда 1 ГБ оперативной памяти все еще остается занятым.
Я такжепопытался явно вызвать сборщик мусора, но он освободил бы около ~ 100 МБ и все еще ~ 900 МБ остается занятым.Это почему?Почему память, используемая моим процессом, не составляет ~ 25 МБ при возврате из функции loadData?Loadmat должен загрузить данные из файла .mat в память, но, поскольку никто не ссылается на него, почему он не свободен?
import scipy.io
import os
import gc
import time
file_names = ["data.mat"]
def loadData():
input_files_no = len(file_names)
for i in range(input_files_no):
scipy.io.loadmat(os.path.join("..", "data", file_names[i]), struct_as_record=False, squeeze_me=True, mat_dtype=True)
return
def main():
loadData()
a = 0
print("passed")
while True:
time.sleep(5)
a = a + 1
gc.collect()
main()