ㅁㄴㅇㄻㄴㅇㄹ

[겪었던 오류] Python @lru_cache TypeError 본문

겪었던 오류

[겪었던 오류] Python @lru_cache TypeError

hanbin8269 2021. 5. 7. 23:12

오류 내용


윈도우 환경에서 실행할 때는 잘 돌아갔는데 Docker에 올려 리눅스 환경에서 실행할 때 위와 같은 에러가 발생했다.

우선 해결 방법은 maxsize를 지정해 주면 된다.
ex) @lru_cache(maxsize=128)

왜 이러지?

찾아봤는데 윈도우와 리눅스 환경의 차이는 아니고 파이썬 버전에 차이가 있었다.

Python 3.7
Python 3.8

Python 3.8 의 517번째줄 주석을 보면 "user_fuction 이 maxsize 인수로 직접적으로 전달되었다." 라는 말이 있다.

Python 3.8에서는 데코레이터의 wrap function이 maxsize로 전달되어 버렸을 때의 데이터 처리 과정이 있지만 Python 3.7에는 존재하지 않는다.

그렇기 때문에 maxsize를 지정해 주지 않으면 wrap function이 maxsize로 전달되어 버려 예외가 일어나는 것이다.