什么是空闲列表(PyDict_ClearFreeList 指的)?
What is the free list (that PyDict_ClearFreeList refers to)?
有一个用于 Python 字典的 C API 函数,名为 PyDict_ClearFreeList
。然而,文档字符串相当稀疏:
int PyDict_ClearFreeList()
Clear the free list. Return the total number of freed items.
New in version 3.3.
此函数没有参数,因此它(可能)与任何特定词典无关。
它 returns 一个 int
。这看起来很奇怪,因为这表明它指的是某些 C 状态,因为 python "类" 总是有一个 Py_ssize_t
大小。
那么这个“免费列表”到底是什么?
你说得对,空闲列表与任何特定词典无关;事实上,它适用于多种数据类型(例如 PyFloat_ClearFreeList
)。
空闲列表是 Python 保存它可以放置东西的空闲位置列表的地方 - 即包含它不再使用但尚未释放回全局的对象的内存 Python内存池或系统。
根据 this useful Theano tutorial:
To speed-up memory allocation (and reuse) Python uses a number of
lists for small objects. Each list will contain objects of similar
size: there will be a list for objects 1 to 8 bytes in size, one for 9
to 16, etc. When a small object needs to be created, either we reuse a
free block in the list, or we allocate a new one.
有一个用于 Python 字典的 C API 函数,名为 PyDict_ClearFreeList
。然而,文档字符串相当稀疏:
int PyDict_ClearFreeList()
Clear the free list. Return the total number of freed items.
New in version 3.3.
此函数没有参数,因此它(可能)与任何特定词典无关。
它 returns 一个 int
。这看起来很奇怪,因为这表明它指的是某些 C 状态,因为 python "类" 总是有一个 Py_ssize_t
大小。
那么这个“免费列表”到底是什么?
你说得对,空闲列表与任何特定词典无关;事实上,它适用于多种数据类型(例如 PyFloat_ClearFreeList
)。
空闲列表是 Python 保存它可以放置东西的空闲位置列表的地方 - 即包含它不再使用但尚未释放回全局的对象的内存 Python内存池或系统。
根据 this useful Theano tutorial:
To speed-up memory allocation (and reuse) Python uses a number of lists for small objects. Each list will contain objects of similar size: there will be a list for objects 1 to 8 bytes in size, one for 9 to 16, etc. When a small object needs to be created, either we reuse a free block in the list, or we allocate a new one.