sys.getsizeof
сообщает только стоимость самого list
, а не его содержимое.Итак, вы видите стоимость хранения заголовка объекта list
, плюс (чуть более) 50M указателей;Вы, вероятно, используете 64-битную (восьмибайтовую) систему указателей, поэтому хранилище для 50M-указателей составляет ~ 400 МБ.Чтобы получить истинный размер, потребуется sys.getsizeof
для каждого объекта, рекурсивного __dict__
(если применимо) и т. Д. Каждого объекта, и он не будет на 100% точным, поскольку некоторые объекты (например, маленькие * 1006)* s), вероятно, являются общими; это не кроличья нора, которую вы хотите пробить .