repoze.lru est un LRU (moins récemment utilisé) mise en œuvre de cache et décorateur & nbsp;. Clés et des valeurs qui ne sont pas fréquemment utilisés seront expulsés du cache plus rapidement que les clés et les valeurs qui sont utilisées fréquemment. Il fonctionne sous Python 2.5, Python 2.6, Python 2.7 et Python 3.2.
API
Création d'un objet LRUCache:
de repoze.lru importation LRUCache
cache = LRUCache (100) # longueur de 100 max
Récupération d'un objet LRUCache:
cache.get ('inexistant', 'foo') # reviendra 'foo'
cache.get ('inexistant') # retournera None
cache.get («existantes») # retourne la valeur existante
Ajout d'un objet LRUCache:
cache.put ('key', 'valeur') # ajoute la «clé» clé avec la valeur «valeur»
Effacement d'une LRUCache:
cache.clear ()
Décorateur
Un décorateur de lru_cache existe. Toutes les valeurs passées à la fonction décorée doivent être hashable. Il ne supporte pas les arguments de mots clés:
de repoze.lru importation lru_cache
lru_cache (500)
def expensive_function (* arg):
& Nbsp; passe
Chaque fonction décoré avec le décorateur de lru_cache utilise son propre cache liés à cette fonction
Ce qui est nouveau dans cette version:.
- Ajout d'un 'CacheMaker' classe d'aide:. un fabricant maintient références (par nom) aux caches qu'il crée, pour leur permettre de défricher
- statistiques ajouté à chaque cache, les recherches de suivi, frappe, de justesse, et les expulsions.
- Création automatique docs Sphinx et tester exemple des extraits sous tox.
- Documentation Ajouté Sphinx.
- supprimé le support pour Python 2.5.
- Ajout du support pour PyPy.
- Ajout docs setup.py alias (installe Sphinx et dépendances).
- setup.py Ajouté alias de dev (pistes développent ainsi installe nez et de la couverture).
- Ajout du support pour CI sous Pythons soutenus utilisant tox.
- Bug: Retirer condition de concurrence potentielle sur le verrou face à des interruptions (numéro 10) .
Quoi de neuf dans la version 0.5:
- Caractéristique: ajouté un nouveau & quot; invalider () & quot; méthode pour permettre le retrait des articles du cache (question n ° 8).
- Bug: LRUCache.put () pourrait prendre plusieurs secondes sur de grandes caches (Numéro 7 #) .
- Bug: LRUCache était pas thread-safe (Issue # 6) .
- Bug: LRUCache.clock perdrait RAM (Numéro 4) .
- Bug:. Répété poussant d'une entrée supprimerait autres entrées de cache (Issue # 3)
- Bug: LRUCache serait expulser entrées même si pas plein (Numéro 2) .
Exigences :
- Python
Commentaires non trouvées