안녕하세요, 오늘은 Django의 cached_property에 대해서 알아보려고 합니다.
파이썬의 @property
파이썬에는 @property 라는 데코레이터가 존재합니다. 간단하게 설명하자면 캡슐화를 위해 활용될 수 있습니다.
바로, 클래스 외부에서는 해당 속성의 구현에 대해서는 알 필요가 없고 접근만 가능하게 하는 용도입니다.
관련 내용은 이전에 작성한 포스팅을 참고하시면 좋을 것 같습니다.
https://leffept.tistory.com/354
Django의 @cached_property
Django Utils에서도 property에 기능이 추가된 @cached_property 데코레이터를 지원합니다. 그럼 이제 어떤 기능을 하는지 알아보도록 합시다.
@cached_property 데코레이터는 단일 self 인수를 속성으로 한 메소드의 결과를 캐싱합니다. 캐시 결과는 인스턴스가 지속되는 한 보존되고, 이후에 해당 함수가 호출되면 캐시된 결과를 반환하도록 합니다.
어디에 사용될까?
네이밍 그대로 캐싱의 역할을 위해 사용됩니다. 특히, 연산작업이 무겁고 캐싱이 되어도 큰 문제가없는 함수들의 경우에 주로 활용될 수 있겠습니다. 여러번 호출하더라도 로직이 실행되지 않고 캐싱된 결과만을 돌려주다보니 성능을 최적화 하는데 도움이 됩니다.
하지만, 캐싱을 하면 안되는 형태의 데이터들의 경우에는 적합하지 않을 수 있습니다. 예를 들면 변동성이 커서 결과가 자주 변하는 것과 같은 데이터에는 적합하지 않습니다.
https://docs.djangoproject.com/en/4.1/ref/utils/#django.utils.functional.cached_property
읽어주셔서 감사합니다 :)
'SW개발 > Django' 카테고리의 다른 글
[Django]TIME_ZONE, USE_TZ 설정 (feat. 글로벌 서비스) (1) | 2022.11.15 |
---|---|
[Django]SetUpTestData의 격리 지원 (feat. Django > 3.2) (0) | 2022.08.02 |
[Django]get_or_create() 란? (0) | 2022.08.01 |
[Django]DateField의 auto_now_add 옵션, 정확히 알아보기 (0) | 2022.07.31 |
[Django]Side effect 를 방지하는 테스트 코드 작성법 (0) | 2022.03.17 |