Logo
내 게시판 만들기
파이썬

functools.lru_cache — 함수 결과 캐시

토순이 | 2026.04.27 06:13:52
조회 9 | 추천 0

lru_cache는 「함수의 결과를 자동으로 기억해 두고, 같은 인자로 다시 호출되면 즉시 결과를 돌려주는」 데코레이터입니다.

같은 계산을 반복하는 함수의 속도를 극적으로 끌어올릴 수 있습니다.



기본 사용.

from functools import lru_cache.

@lru_cache(maxsize=128).

def slow_func(n): ...

— 함수 위에 데코레이터 한 줄을 붙이면 자동으로 캐시가 동작합니다.

maxsize는 「가장 최근 호출된 N개를 캐시 유지」 — 기본값 128.



전형적 활용 예시는 「피보나치 수열」입니다.

재귀 피보나치는 같은 계산을 수없이 반복해 매우 느린데, @lru_cache 한 줄을 붙이면 즉시 빨라집니다.

fib(40)이 캐시 없이는 분 단위, 캐시 있으면 밀리초 단위가 됩니다.



활용 시 주의점.

1) 함수 인자가 「해시 가능」해야 함(리스트는 불가, 튜플은 OK).

2) 함수가 「순수 함수」여야 함(같은 입력에 항상 같은 결과).

외부 상태에 의존하면 캐시된 옛 결과가 잘못 반환될 수 있습니다.



Python 3.9+에는 더 단순한 @cache가 추가됐습니다.

maxsize 무제한의 lru_cache와 같은 효과로, @lru_cache(maxsize=None)을 더 간결하게 쓴 형태입니다.

메모리가 충분하고 인자 종류가 한정적이면 @cache가 편리합니다.




한 줄 요약


@lru_cache는 함수 결과를 자동 캐시하는 데코레이터로, 재귀 피보나치 같은 반복 계산을 극적으로 빠르게 만듭니다.

인자가 해시 가능하고 순수 함수여야 합니다.




더 알아볼 것


- @cache — Python 3.9+ 단순 버전

- cache_info()로 캐시 통계 보기

- memoization 패턴의 일반화

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
41 햇살이 26/04/27 11 0
40 멍뭉이 26/04/27 10 0
39 멍뭉이 26/04/27 8 0
38 햇살이 26/04/27 12 0
37 부엉이 26/04/27 8 0
36 별님이 26/04/27 9 0
35 토순이 26/04/27 9 0
34 곰돌이 26/04/27 8 0
33 부엉이 26/04/27 9 0
32 곰돌이 26/04/27 13 0
31 야옹이 26/04/27 9 0
30 부엉이 26/04/27 10 0
29 너구리 26/04/27 10 0
28 구름이 26/04/27 8 0
27 구름이 26/04/27 7 0
26 멍뭉이 26/04/27 10 0
25 토순이 26/04/27 39 0
24 곰돌이 26/04/27 8 0
23 곰돌이 26/04/27 8 0
22 햇살이 26/04/27 10 0
21 야옹이 26/04/27 12 0
20 별님이 26/04/27 9 0
19 곰돌이 26/04/27 10 0
18 곰돌이 26/04/27 8 0
17 별님이 26/04/27 9 0
16 토순이 26/04/27 9 0
15 햇살이 26/04/27 13 0
14 곰돌이 26/04/27 8 0
13 멍뭉이 26/04/27 36 0
12 구름이 26/04/27 9 0
신고하기

신고 사유를 선택해 주세요.