Я использую python для анализа некоторых больших файлов, и у меня возникают проблемы с памятью, поэтому я использовал sys.getsizeof(), чтобы попытаться отслеживать использование, но это поведение с пустыми массивами странно. Вот пример с картой альбедо, которую мне нужно открыть:
>>> импортировать numpy как np >>> импортировать структуру >>> из sys import getsizeof >>> f = open("Albedo_map.assoc", "rb") >>> getsizeof(f) 144 >>> albedo = struct.unpack("%df" % (7200*3600), f.read(7200*3600*4)) >>> getsizeof(альбедо) 207360056 >>> albedo = np.array(albedo).reshape(3600,7200) >>> getsizeof(albedo) 80
Ну, данные все еще там, но размер объекта, карты 3600x7200 пикселей, увеличился с ~ 200 МБ до 80 байт. надеяться, что мои проблемы с памятью закончились и я просто преобразую все в пустые массивы, но я чувствую, что такое поведение, если оно верно, каким-то образом нарушит какой-то закон теории информации или термодинамики, или что-то в этом роде, поэтому я склонен полагать, что getsizeof() не работает с массивами numpy. Есть идеи?