Caching in Python con DiskCache

Mattepuffo's logo
Caching in Python con DiskCache

Caching in Python con DiskCache

DiskCache è un'ottima libreria per Python per il caching di dati.

Molto usata anche Django, si crea un suo db su filesystem che si può condividere anche tra diverse applicazioni.

In questo articolo vediamo un paio di esempi.

Per l'installazione possiamo usare pip:

pip install diskcache

Qui sotto un primo esempio:

from time import sleep

from diskcache import Cache

cache = Cache('./my_cache')

cache['chiave1'] = 'valore1'
cache['numero'] = 42
cache['lista'] = [1, 2, 3, 4, 5]

print(cache['chiave1'])
print(cache['numero'])

if 'chiave1' in cache:
    print("La chiave esiste!")

valore = cache.get('chiave_inesistente', 'default')

print(valore)

del cache['chiave1']

cache.set('chiave_temporanea', 'valore temp', expire=10)

sleep(15)

print(cache.get('chiave_inesistente', 'scaduta'))

cache.close()

Quello sleep serve per testare la scadenza.

Qui sotto un esempio in cui simuliamo una operazione lenta e la richiamiamo due volte:

from diskcache import Cache
import time

cache = Cache('./my_cache')

def operazione_lenta(n):
    cache_key = f'risultato_{n}'

    if cache_key in cache:
        print(f"Risultato trovato in cache per n={n}")
        return cache[cache_key]

    print(f"Calcolo in corso per n={n}...")
    time.sleep(2)
    risultato = n * n

    cache[cache_key] = risultato
    return risultato

print(operazione_lenta(5))
print(operazione_lenta(5))

cache.close()

Potete vedere che la seconda esecuzione è molto più veloce della prima.


Condividi

Commentami!