Python字典有一个名为PyDict_ClearFreeList
的C API函数。然而,文档字符串相当稀疏:
int PyDict_ClearFreeList()
清除免费列表。返回已释放项目的总数。
版本3.3中的新功能。
此函数没有参数,因此它(可能)与任何特定字典无关。
它返回int
。这看起来很奇怪,因为这表明它引用了一些C状态,因为python"类"始终有Py_ssize_t
大小。
这究竟是什么"免费列表"?
答案 0 :(得分:2)
你是对的,自由列表与任何特定字典无关;实际上,它适用于众多数据类型(例如PyFloat_ClearFreeList
)。
自由列表是Python保存可以放置东西的空闲列表的位置 - 即包含不再使用的对象的内存,但它没有释放回全局Python内存池或系统。 / p>
为了加速内存分配(和重用),Python使用了许多 小对象的列表。每个列表都包含相似的对象 size:对象的大小为1到8个字节,一个用于9 当需要创建一个小对象时,我们要么重用一个 列表中的空闲块,或者我们分配一个新块。