728x90
배경:
우리가 어떤 class의 object를 만들 때면, 각 object마다 dictionary가 할당되는데, 이는 object의 attribute를 저장해두기 위함이다. 이는 dictionary다 보니까 메모리를 꽤나 차지한다. 다수의 object를 만들 때면 이러한 메모리들이 쌓여 태산이 된다.
사용할 상황:
class에 attibutes가 제한되어 있다면(즉 향후에 dynamic하게 attributes를 추가하거나 하는 작업이 없다면)
__slots__로 attribute를 제한하고 시작하고, 이렇게 되면 dictionary를 사용하지 않아 메모리를 절약함과 동시에
attribute 접근 속도도 빨라진다.
사용법:
class attribute로 __slots__ = ['att1', 'att2'] 형태로, 사용할 attributes를 선언하면,
이 class의 object는 __dict__를 갖지 않는다.
장점:
-object의 attribute 접근 속도 향상
-메모리 절약
단점:
-dynamic attribute 할당은 불가
참고자료:
www.geeksforgeeks.org/python-use-of-__slots__/
728x90
'CS' 카테고리의 다른 글
(미완)[Python]Global Interpreter Lock에 대해서 (0) | 2020.11.06 |
---|---|
[Database]RDBMS(Relational DataBase Management System)란 무엇인가? (0) | 2020.11.03 |
[Python]Iterable VS Iterator (feat Generator) 정의에서 대조까지 (0) | 2020.11.02 |
(미완)소프트웨어 성능 측정 metric의 종류 (0) | 2020.11.01 |
(미완)[Python]습관을 바꾸어, 속도를 높이자. (0) | 2020.10.30 |