最近我使用Pympler比较了Python中set
和frozenset
占用的内存量:
>>> from pympler.asizeof import asizeof
>>> x = range(100)
>>> s = set(x)
>>> f0 = frozenset(x)
>>> f1 = frozenset(s)
>>> asizeof(s)
10824
>>> asizeof(f0)
10824
>>> asizeof(f1)
6728
>>> f0==f1
True
为什么从一个可迭代对象创建的 `frozenset` 与从其他可迭代对象创建的 `frozenset` 占用的内存不同?或者这只是 Pympler 如何近似计算 Python 变量占用内存量的怪癖?
frozenset
也不会被PyObject_Malloc
分配,因此大多数内存跟踪器(pympler
,tracemalloc
)无法看到它。 - OrangeDog