在 python 中使用插槽是个好主意吗?
Is it a good idea to use slots in python?
在 python 中使用槽是一种很好的 pythonic 技术还是来自 C 语言家族的习惯?我听说它们可以提高程序的性能并减少内存消耗,尤其是在创建许多对象时。原则上,使用插槽可能会成为日常工作,因为几乎总是可以知道 class 的属性。那么我应该一直使用插槽吗?我应该在什么时候使用插槽?
这是'official' answer
“插槽
class 中的声明通过预先声明 space 实例属性和消除实例字典来节省内存。虽然流行,但该技术要正确使用有点棘手,最好保留在内存关键应用程序中有大量实例的罕见情况下。"
我相信 3.6 中 CPython dict 内部结构的变化减少了 __slots__
的收益。
在 python 中使用槽是一种很好的 pythonic 技术还是来自 C 语言家族的习惯?我听说它们可以提高程序的性能并减少内存消耗,尤其是在创建许多对象时。原则上,使用插槽可能会成为日常工作,因为几乎总是可以知道 class 的属性。那么我应该一直使用插槽吗?我应该在什么时候使用插槽?
这是'official' answer “插槽 class 中的声明通过预先声明 space 实例属性和消除实例字典来节省内存。虽然流行,但该技术要正确使用有点棘手,最好保留在内存关键应用程序中有大量实例的罕见情况下。"
我相信 3.6 中 CPython dict 内部结构的变化减少了 __slots__
的收益。