Недавно у меня были данные в файле users.json
, загрузка которого в VsCode заняла много времени, так как файл был слишком большим (меня это удивило, потому что это был файл 29mb
), я хотел использовать это шанс поиграть с использованием памяти питонов, я загрузил файл все в память, и он работал как ожидалось.
Хотя у меня есть вопрос, мне все больше нужно объяснение, простите, если его ответ слишком очевиден;
Когда я произвел самоанализ на загруженном json
объекте Я обнаружил, что размер объекта (1.3mb
) был намного меньше размера файла (29.6mb
) в моей файловой системе (MacOS
), как это могло быть? Разница в размерах слишком велика, чтобы ее игнорировать. Что еще хуже, у меня был файл меньшего размера, и этот файл возвращал результаты аналогичного размера (на диске / загружен, ~ 358kb
), хаха.
import json
with open('users.json') as infile:
data = json.load(infile)
print(f'Object Item Count: {len(data):,} items \nObject Size: {data.__sizeof__():,} bytes)
Использование sys.getsizeof(data)
вернет что-то похожее, может быть, с некоторыми gc
накладными расходами.
Возвращает точный размер файла на диске (29586765
байт, 29mb
)
from pathlib import Path
Path('users.json').stat().st_size
Пожалуйста, кто-нибудь может объяснить мне, что происходит, можно подумать, что там должно быть сходство по размеру или, может быть, я ошибаюсь.