Число с плавающей запятой занимает по 16 байт в каждом, а диктат с 1500 записями около 100 тыс.:
>> sys.getsizeof(1.0)
16
>>> d = dict.fromkeys((float(i) for i in range(1500)), 2.0)
>>> sys.getsizeof(d)
98444
, поэтому 22 500 диктов занимают более 2 ГБ сами по себе, 68 миллионов плавают еще один ГБ или около того.Не уверен, как вы вычислили 68 миллионов раз 16 равных только 100M - возможно, вы где-то упали ноль.
Сам класс занимает незначительное количество, и 1500 его экземпляров (за исключением объектов, к которым они относятсяКонечно, точно так же, как getsizeof
дает нам такие чистые суммы для диктов), не намного больше, чем каждый маленький диктат, так что это вряд ли проблема.Т.е.:
>>> sys.getsizeof(Sic)
452
>>> sys.getsizeof(Sic())
32
>>> sys.getsizeof(Sic().__dict__)
524
452 для класса, (524 + 32) * 1550
= 862K для всех экземпляров, поскольку, как вы видите, не стоит беспокоиться, если у вас есть гигабайты в надписях и числах.