Почему кэширование рекурсивной функции с помощью functools.lru_cache со временем приводит к увеличению объема памяти в PPython

Программы на Python
Anonymous
 Почему кэширование рекурсивной функции с помощью functools.lru_cache со временем приводит к увеличению объема памяти в P

Сообщение Anonymous »

Код работает нормально, но когда я профилирую использование памяти (с помощью Tracemalloc или Memory_profiler), оно продолжает увеличиваться, хотя я ожидал, что кеш будет повторно использовать результаты.
Я пробовал:
Установить для maxsize фиксированное значение, например 128, — все равно растет.
Очистка кеша с помощью fib.cache_clear() — помогает, но только после возврата функции.
Заключение рекурсии в цикл или отдельную функцию — нет существенной разницы.
Поэтому мои вопросы:
Почему использование памяти продолжает расти, даже если результаты предположительно кэшируются?
Связано ли такое поведение с Python стек рекурсии или внутренний подсчет ссылок в кеше?
Как лучше всего оптимизировать рекурсивные кэшированные функции для больших входных данных без чрезмерного использования памяти?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -memory-gr

Вернуться в «Python»