У меня есть функции в python, у которых есть кеши с lru_cache, например.Очистить все lru_cache в Python
@lru_cache(maxsize=None)
def my_function():
...
Хотя я могу индивидуально очищать кеши, например. my_function.cache_clear()
есть ли способ очистки кешей каждой функции сразу? [Я думал, что, возможно, есть способ вернуть все имена функций, загруженные в память, а затем зацикливать их, очищая кеш от каждого].
Я специально ищу для реализации как часть спада, для случаев, когда говорят, что 90% памяти на моей машине используется.
Да, декорированная функция теперь имеет метод 'my_function.cache_clear()'. Вы также можете получить статистику с помощью 'my_function.cache_info()'. См. ['Lru_cache'] (https://docs.python.org/3.5/library/functools.html?highlight=lru#functools.lru_cache) – AChampion
@AChampion - конечно, осознавая оба из этих вопросов, хотя это скорее есть способ применить эти методы к каждому украшенному функциям (т. е. очистить * все * lru_cache's). – kyrenia
Нет, нет простого способа очистки всех украшенных кехов функций, все они независимы. Вы можете создать реестр всех этих функций, а затем пропустить их, чтобы очистить. – AChampion