Python 2.7 中 set 与 frozenset 占用的内存对比
我最近在用 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
为什么从一个 set
创建的 frozenset
占用的内存和从其他可迭代对象创建的 frozenset
却不一样呢?这只是 Pympler 在估算 Python 变量占用内存时的一种特殊情况吗?
1 个回答
1
这是因为在C语言中,frozenset构造函数的逻辑问题,不过这确实可能值得向CPython提交一个bug报告。