详细内容或原文请订阅后点击阅览
Python的__slots__实际做什么?
Learn how Python __slots__ reduces memory and boosts speed with real benchmarks from a data science project used in Allegro’s hiring challenge.
来源:KDnuggets如果有一种方法可以使您的Python代码更快? __slots__ in Python is easy to implement and can improve the performance of your code while reducing the memory usage.
__slots__
在本文中,我们将使用来自现实世界中的数据科学项目的工作方式,在那里,Allegro将其用作其数据科学招聘过程的挑战。但是,在我们进入这个项目之前,让我们对__ slots__做什么有深入的了解。
python中的__slots__是什么?
在Python中,每个对象都保留其属性的字典。这使您可以添加,更改或删除它们,但也以付出代价:额外的内存和较慢的属性访问。这是一个限制,但可以节省我们的时间。让我们看看一个例子。
class notslots: def __init __(自我,名称,年龄): self.name =名称 self.age =年龄 与lots上课: __ slots__ = ['name','age'] def __init __(自我,名称,年龄): self.name =名称 self.age =年龄
在第二类中,__slots__告诉Python不要为每个对象创建一个字典。取而代之的是,它保留在内存中的固定位置,以获取名称和年龄值,从而使其更快并减少内存使用量。
为什么使用__slots__?
现在,在启动数据项目之前,让我们命名为什么要使用__slots__的原因。
- 内存:当Python跳过创建字典时,对象占用更少的空间。Speed:访问值更快,因为Python知道每个值存储在哪里。Bugs:此结构避免使用静音错误,因为只有定义的漏洞。