Python 2.7 中 set 与 frozenset 占用的内存对比

6 投票
1 回答
629 浏览
提问于 2025-04-18 06:20

我最近在用 Pympler 比较 Python 中 setfrozenset 占用的内存大小:

>>> 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报告。

撰写回答