[Django]cached_property 란?

2023. 1. 15. 15:29·SW개발/Django

안녕하세요, 오늘은 Django의 cached_property에 대해서 알아보려고 합니다.

 

파이썬의 @property

파이썬에는 @property 라는 데코레이터가 존재합니다. 간단하게 설명하자면 캡슐화를 위해 활용될 수 있습니다. 

바로, 클래스 외부에서는 해당 속성의 구현에 대해서는 알 필요가 없고 접근만 가능하게 하는 용도입니다. 

관련 내용은 이전에 작성한 포스팅을 참고하시면 좋을 것 같습니다.

https://leffept.tistory.com/354

 

[Python]property로 getter, setter 구현하기

Python에서 getter, setter 구현하는 방법 Python 에서 getter와 setter 함수를 구현하는 방법은 2가지가 존재한다. property() 함수를 이용하는 방법 @property 속성을 이용하는 방법 하나씩 차례대로 알아보자. p

leffept.tistory.com

 

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

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

읽어주셔서 감사합니다 :)

 

728x90

'SW개발 > Django' 카테고리의 다른 글

[Django]TIME_ZONE, USE_TZ 설정 (feat. 글로벌 서비스)  (2) 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
'SW개발/Django' 카테고리의 다른 글
  • [Django]TIME_ZONE, USE_TZ 설정 (feat. 글로벌 서비스)
  • [Django]SetUpTestData의 격리 지원 (feat. Django > 3.2)
  • [Django]get_or_create() 란?
  • [Django]DateField의 auto_now_add 옵션, 정확히 알아보기
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • SW개발 (303)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (1)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배달비 공유
    컨트리뷰터
    django
    오픈소스
    Contributor
    배공파용
    배달
    트리 #AVL #알고리즘 #자료구조
    음식
    라이프 스타일
    g
    어플리케이션
    플레이스토어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[Django]cached_property 란?
상단으로

티스토리툴바