Come utilizzare la decorazione integrata Python per migliorare significativamente le prestazioni |  di Christopher Tao |  Aprile 2024

 | Intelligenza-Artificiale

Come implementare un meccanismo di memorizzazione nella cache in Python e quando non utilizzarlo?

Quando si parla di migliorare le prestazioni di esecuzione di Python, in particolare per l'elaborazione dei dati, ci sono troppe librerie di terze parti che possono aiutarci. Se pensiamo ai loro meccanismi, la maggior parte di essi si basa sull’ottimizzazione della struttura dei dati o sull’utilizzo della memoria per ottenere un miglioramento delle prestazioni.

Ad esempio, Dask sfrutta il calcolo parallelo e l’ottimizzazione della memoria, Pandas si affida alla vettorizzazione del set di dati e Modlin ottimizza anche l’utilizzo della CPU e della memoria multi-core.

In questo articolo non presenterò alcuna libreria. In effetti, esiste una decorazione nativa di Python che potrebbe essere utilizzata per migliorare significativamente le prestazioni. Non abbiamo bisogno di installare nulla perché è integrato in Python. Naturalmente, non verrà utilizzato per tutti gli scenari. Quindi, nell'ultima sezione, discuterò anche di quando non dovremmo usarlo.

Immagine creata in Canva dall'autore

Cominciamo con un esempio vanigliato che tutti conosciamo, il Sequenza di Fibonacci. Di seguito è riportata una normale implementazione che utilizza la ricorsione.

def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

Come la maggior parte degli altri linguaggi di programmazione, anche Python deve creare uno “stack” per una funzione ricorsiva e calcolare il valore su ogni stack.

Tuttavia, la decorazione “cache” migliorerà significativamente le prestazioni. Inoltre, non è difficile farlo. Dobbiamo solo importarlo dal file functools modulo, quindi aggiungere la decorazione alla funzione.

from functools import cache

@cache
def fibonacci_cached(n):
if n < 2:
return n
return fibonacci_cached(n-1) + fibonacci_cached(n-2)

Ecco i risultati della corsa e il confronto delle prestazioni.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *