repoze.lru è una LRU (Least Recently Used) implementazione di cache e decoratore. & Nbsp; Le chiavi e valori che non vengono utilizzati di frequente saranno sfrattati dalla cache più veloce di chiavi e valori che vengono utilizzati di frequente. Funziona in Python 2.5, Python 2.6, Python 2.7 e Python 3.2.
API
La creazione di un oggetto LRUCache:
da repoze.lru import LRUCache
cache = LRUCache (100) # 100 max lunghezza
Recupero da un oggetto LRUCache:
cache.get ('inesistente', 'foo') # restituisce 'foo'
cache.get ('inesistente') # restituirà None
cache.get ('esistente') # restituirà il valore esistente
Aggiunta di un oggetto LRUCache:
cache.put ('chiave', 'valore') # aggiungerà la 'chiave' chiave con il 'valore' valore
Cancellazione di un LRUCache:
cache.clear ()
Decoratore
Esiste un decorator lru_cache. Tutti i valori passati alla funzione decorato devono essere hashable. Non supporta argomenti chiave:
da repoze.lru import lru_cache
lru_cache (500)
def expensive_function (* arg):
& Nbsp; passaggio
Ogni funzione decorato con il decoratore lru_cache utilizza la propria cache relativi a quella funzione
Cosa c'è di nuovo in questa versione:.
- Aggiunto un 'CacheMaker' classe di supporto:. un creatore mantiene riferimenti (per nome) alle cache che crea, per consentire loro di essere cancellato
- Statistiche aggiunto a ciascun di cache, le ricerche di monitoraggio, successi, manca, e sfratti.
- costruzione automatizzata docs Sfinge e prove esempio frammenti sotto tox.
- documentazione Aggiunto Sphinx.
- cessato il supporto per Python 2.5.
- Supporto di PyPy.
- Aggiunto docs setup.py alias (installa Sfinge e dipendenze).
- Aggiunto setup.py dev alias (piste si sviluppano più installa naso e la copertura).
- Aggiunto il supporto per CI sotto Pythons supportate utilizzando tox.
- Bug: Rimuovere potenziale condizione di competizione sul blocco di fronte alle interruzioni (numero # 10) .
Cosa c'è di nuovo in versione 0.5:
- Feature: aggiunto un nuovo & quot; invalidate () & quot; metodo per consentire la rimozione di elementi dalla cache (numero # 8).
- Bug: LRUCache.put () potrebbe richiedere più secondi su grandi cache (Issue # 7) .
- Bug: LRUCache non thread-safe (Issue # 6) .
- Bug: LRUCache.clock avrebbe sprecato RAM (Issue # 4) .
- Bug:. Ripetute spinta di una voce eliminerebbe altre voci di cache (Issue # 3)
- Bug: LRUCache sarebbe sfrattare le voci anche se non completo (Issue # 2) .
Requisiti :
- Python
I commenti non trovato