19 luglio 2024

Pillola di Python #13 - Programmazione asincrona con asyncio



Python offre un potente modulo chiamato asyncio per la programmazione asincrona, che permette di scrivere codice non bloccante utilizzando le parole chiave async e await. Questo approccio è ideale per gestire operazioni I/O-bound come richieste di rete, lettura/scrittura su file, e altre attività che possono beneficiare della concorrenza senza il sovraccarico dei thread o dei processi.

Introduzione a asyncio

asyncio è stato introdotto in Python 3.4 e permette di eseguire funzioni asincrone in un ciclo di eventi (event loop). Le funzioni asincrone sono definite con la parola chiave async, e le chiamate a funzioni asincrone utilizzano la parola chiave await.

Esempio Base di asyncio

Vediamo un esempio di base per capire come funziona asyncio:



Si otterrà:
Ciao, Dee!
Ciao, Kiki!
Ciao, Bolla!
Arrivederci, Dee!
Arrivederci, Kiki!
Arrivederci, Bolla!
Cosa abbiamo fatto con quel codice? Vediamolo insieme:
- Siamo partiti dalla Definizione di Funzioni Asincrone, saluta(nome) è una funzione asincrona che stampa un messaggio di saluto, aspetta un secondo (simulando un'attività I/O), e poi stampa un messaggio di congedo.
- main() è la funzione principale asincrona che utilizza asyncio.gather per eseguire più funzioni saluta in parallelo.
- Si eseguono gli eventi ed asyncio.run(main()) esegue la funzione main all'interno del ciclo di eventi, gestendo automaticamente l'avvio e la chiusura.

Ovviamente questo è un esempio basilare, l'argomento è vastissimo, ma la programmazione asincrona con asyncio permette di scrivere codice non bloccante che può gestire operazioni I/O in modo efficiente. Utilizzando async e await, è possibile eseguire funzioni asincrone in parallelo, migliorando le prestazioni delle applicazioni che richiedono molte operazioni I/O. Sperimenta con asyncio per vedere come può migliorare il tuo prossimo progetto Python!

Tondo è bello...

Tondo è bello...