Некоторые ситуации, в которых декоратор @lru_cache может быть неэффективен:
- Функция вызывается один раз и в ней работает цикл. 4 В таком случае нет смысла мемоизировать функцию, так как для сохранения результатов нужна отправная точка. 4
- В памяти хранится слишком много различных вызовов. 5 Если атрибуту maxsize декоратора @lru_cache присвоить значение None, то кэш будет расти без всякого удаления записей. 5 Это может стать проблемой. 5
- Создаётся много экземпляров функции, и сборщик мусора не может их удалить. 1 В таком случае может произойти переполнение рабочей памяти и сбой процесса. 1
Декоратор @lru_cache используется для мемоизации рекурсивных функций и для ускорения работы функций, которые долго выполняются из-за сложности вычислений или задержек ввода-вывода. 2