Questo progetto è una Single Page Application (SPA) realizzata per la materia TPSI (Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazioni). La presentazione esplora i paradigmi di concorrenza in Python, analizzando le differenze tra Multithreading e I/O Asincrono.
- React: Libreria per la costruzione dell'interfaccia utente.
- Vite: Build tool ultra-rapido per lo sviluppo frontend.
- Lucide React: Set di icone per il sistema di navigazione.
- CSS3: Gestione della palette custom tramite variabili native.
Questo progetto è stato sviluppato adottando un approccio AI-First. L'intelligenza artificiale (Gemini) è stata utilizzata come collaboratore tecnico per le seguenti fasi:
- Analisi del Contenuto: Elaborazione del documento tecnico fornito ("Dilecce_Approfondimento.pdf") per estrarre i punti chiave su GIL, coroutine ed event loop.
- UI/UX Design: Generazione di un layout responsivo basato su una palette specifica, ottimizzando la gerarchia visiva per scopi didattici.
- Refactoring del Codice: Pulizia della struttura JSX, implementazione di uno stato React per il burger menu e gestione dello scrolling fluido.
- Debug: Correzione dinamica degli errori di sintassi relativi alle variabili CSS all'interno degli stili inline di React.
Per avviare la presentazione in locale, segui questi passaggi:
-
Clona il progetto ed entra nella directory:
cd tpsi-presentation -
Installa le dipendenze:
npm install
-
Avvia il server di sviluppo:
npm run dev
La presentazione copre i seguenti argomenti estratti dalla ricerca di Riccardo Dilecce:
- Utilizza il modulo
threadingper creare più thread all'interno dello stesso processo. - I thread condividono la memoria e sono adatti per operazioni I/O-bound come lettura/scrittura su file.
- A causa del Global Interpreter Lock (GIL), non è possibile eseguire più thread in parallelo su più core per operazioni CPU-bound.
- Introduce complessità legate alla sincronizzazione come lock, race condition e deadlock.
- Utilizza il modulo
asyncioe si basa su un event loop che gestisce molte operazioni concorrenti tramite coroutine. - Sfrutta la cooperazione delle funzioni asincrone (async/await) per sospendere e riprendere l'esecuzione durante le attese di I/O.
- Risulta più efficiente e scalabile nella gestione di un elevato numero di operazioni I/O concorrenti.
- Garantisce migliori prestazioni nei contesti I/O-bound moderni, pur richiedendo una struttura del codice specifica.
Autore: Riccardo Dilecce Istituto: Istituto di Istruzione Superiore "Archimede" - Treviglio