【问题标题】:Is it a good idea to use slots in python?在 python 中使用插槽是个好主意吗?
【发布时间】:2017-09-16 06:43:32
【问题描述】:

在python中使用槽是一种很好的pythonic技术还是来自C语言家族的习惯?我听说它们提高了程序的性能并减少了内存消耗,尤其是在创建许多对象时。原则上,使用插槽可能会成为一种日常工作,因为几乎总是有人可能知道类的属性是什么。那么我应该一直使用插槽吗?我应该什么时候准确地使用插槽?

【问题讨论】:

  • 仅在您认为需要创建大量(读取 100,000 个)此类对象时才使用插槽。否则,这似乎完全没有必要。
  • 这里的回答相当全面stackoverflow.com/a/28059785/532978
  • 如果您想知道是否应该使用插槽,请不要使用插槽。如果你真的需要它,你会知道的。
  • 还有第二个好处 - 你可以添加一个 __slots__ dict 来记录你的代码,并且像 PyCharm 这样的 linter/IDE 使用 __slots__ 来检查你的变量访问。

标签: python slots


【解决方案1】:

这里是'official' answer "插槽 类中的声明,通过预先声明实例属性的空间和消除实例字典来节省内存。虽然很流行,但要正确使用该技术有些棘手,最好保留在内存关键型应用程序中存在大量实例的极少数情况下。”

我相信 3.6 中对 CPython dict 内部结构的更改会稍微降低 __slots__ 的收益。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2012-04-27
    相关资源
    最近更新 更多