SW개발/Django

[Django]cached_property 란?

안녕하세요, 오늘은 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