J'ai des fonctions en python qui ont des caches avec lru_cache e.g.Effacer tout lru_cache en Python
@lru_cache(maxsize=None)
def my_function():
...
Bien que je puisse effacer individuellement les caches avec par ex. my_function.cache_clear()
est-il un moyen d'effacer les caches de chaque fonction à la fois? [Je pensais qu'il y avait peut-être un moyen de retourner tous les noms de fonctions chargés en mémoire, puis de les faire défiler en effaçant le cache de chacun].
Je cherche spécifiquement à mettre en œuvre dans le cadre d'un repli, pour les cas où, par exemple, 90% de la mémoire sur ma machine est utilisée.
Oui, la fonction décorée a maintenant la méthode 'my_function.cache_clear()'. Vous pouvez également obtenir des statistiques avec 'my_function.cache_info()'. Voir ['lru_cache'] (https://docs.python.org/3.5/library/functools.html?highlight=lru#functools.lru_cache) – AChampion
@AChampion - bien sûr, conscient de ces deux, la question est plutôt est il existe un moyen d'appliquer ces méthodes à toutes les fonctions décorées (c'est-à-dire effacer * tout * les lru_cache). – kyrenia
Non, il n'y a pas de moyen simple pour effacer toutes les caches de fonctions décorées, elles sont toutes indépendantes. Vous pouvez créer un registre de toutes ces fonctions, puis les parcourir pour les effacer. – AChampion