@lru_cache в Python
Поставил (None) у кэша, решил посчитать огромное число, и у меня завис комп. После перезагрузки все работает хорошо.
Подскажите, как работает кэш? Мог ли тот инцидент повлиять на данные и файлы компьютера? Или кэш используется только в оперативной памяти и не забивает жесткий диск?
Представь себе большой словарь с ключами - кортежами значений параметров функции и значениями - возвращаемыми функцией результатами для этих значений параметров.
Перед вызовом функции декоратор проверяет, встречалась ли уже такая комбинация значений параметров. Если не встречалась, функция вызывается и результат работы функции добавляется в словарь. Если же встречалась, результат берётся из словаря без вызова функции.
И если различных комбинаций параметров очень много, то и словарь занимает в оперативной памяти очень много места. А когда место в оперативной памяти заканчивается, начинаются проблемы.
P.S. В действительности, всё сложнее, т.к. в LRU учитываются не только сами комбинации параметров, но и то, насколько давно каждая комбинация параметров встречалась в последний раз. Но при неограниченном кэше это не имеет значения.