Stackless Python: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Recupero di 2 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.9.5
 
Riga 13:
}}
 
'''Stackless Python''', o '''Stackless''', è una variante dell'interprete [[Python]] che offre un approccio innovativo alla gestione dello stack. Stackless utilizza un proprio meccanismo di gestione dello stack, indipendente dallo stack C sottostante. Questo permette di creare un numero praticamente illimitato di [[microthread]] senza preoccuparsi di esaurire lo [[Pila (informatica)|stack]]. <ref>Archived at [https://ghostarchive.org/varchive/youtube/20211211/pDkrkP0yf70 Ghostarchive] and the [{{Cita video|url=http://www.youtube.com/watch?v=pDkrkP0yf70|titolo=Wayback Machine|accesso=20 novembre 2024|dataarchivio=3 gennaio 2014|urlarchivio=https://web.archive.org/web/20140103062231/http://www.youtube.com/watch?v=pDkrkP0yf70 Wayback Machine]|urlmorto=sì}}: {{Cita video|url=https://www.youtube.com/watch?v=pDkrkP0yf70}}</ref>
 
Stackless, inoltre, supporta le [[coroutine]] e i [[Canali (programmazione)|canali]]. Le prime sono una forma di multitasking cooperativo che consente a diversi task di condividere lo stesso thread. I canali, invece, forniscono un meccanismo di comunicazione tra microthread ispirato ai [[Communicating Sequential Processes|CSP (Communicating Sequential Processes)]] permettendo di scambiare dati tra diversi [[Processo (informatica)|task]] in modo sicuro e sincronizzato.
Riga 22:
I microthread offrono un modo efficiente per gestire l'esecuzione concorrente di diverse sotto-attività all'interno di un singolo processo, sfruttando un [[Processore multicore|singolo core]] della [[CPU]]. Pertanto, rappresentano un'alternativa alla programmazione asincrona basata sugli [[Programmazione a eventi|eventi]] ed evitano il sovraccarico dovuto all'utilizzo di thread separati per programmi single-core (in quanto non è necessario effettuare alcun passaggio tra la modalità utente e quella kernel, riducendo in questo modo l'utilizzo della CPU).
 
Stackless Python, pur facilitando la gestione di microthread su un singolo core, non risolve il problema del [[Global Interpreter Lock|Global Interpreter Lock (GIL)]] di [[CPython]]. Quindi anche se Stackless Python permette di creare molti microthread, questi possono comunque essere eseguiti solo uno alla volta su un singolo core della CPU. In tal senso il [[Calcolo parallelo|parallelismo]] risulta limitato (la preemption non inizialmente disponibile in Stackless è stata introdotta seppur in forma limitata). <ref>{{Cita web|url=https://bitbucket.org/stackless-dev/stackless/wiki/Home|citazione=a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively.|titolo=Copia archiviata|accesso=20 novembre 2024|dataarchivio=23 giugno 2020|urlarchivio=https://web.archive.org/web/20200623233250/https://bitbucket.org/stackless-dev/stackless/wiki/Home|urlmorto=sì}}</ref>
 
A causa delle considerevoli modifiche al core di Python, Stackless Python non può essere integrato come una semplice libreria in un'installazione esistente. Richiede invece un'installazione completa e indipendente.