Stackless Python: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Creata dalla traduzione della pagina "Stackless Python" |
Recupero di 2 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.9.5 |
||
(5 versioni intermedie di un altro utente non mostrate) | |||
Riga 1:
{{Software
|Sviluppatore = Anselm Kruis ''(sviluppatore)'', Christian Tismer ''(autore originale)''
|DataPrimaVersione = 1998
|UltimaVersione = 3.8.1-slp
|DataUltimaVersione = 22 gennaio 2020
|UltimaVersioneBeta = 3.9.0 alpha 0
|SistemaOperativo = [[Linux]]
|SistemaOperativo2 = [[MacOS]]
|SistemaOperativo3 = [[Windows]]
|licenza = [[Python Software Foundation License]]▼
|Genere =
|SoftwareLibero = sì
}}
'''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
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.
==
Con Stackless Python, un programma in esecuzione viene suddiviso in microthread gestiti dall'interprete del linguaggio stesso e non dal [[kernel]] del [[sistema operativo]]. A differenza dei thread tradizionali del sistema operativo, i microthread, sono molto più leggeri e richiedono meno risorse per essere creati e gestiti. Questi microthread simulano una sorta di [[multitasking]] interno a un singolo processo, senza dover ricorrere ai costosi [[context switch]] del sistema operativo.
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
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 era disponibile in Stackless mentre ora è stata introdotta una forma di preemption 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.}}</ref>▼
▲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
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.
Riga 26 ⟶ 28:
La maggior parte delle funzionalità di Stackless sono state implementate anche in [[PyPy]], un interprete Python che agisce anche come [[Compilatore just-in-time|compilatore Just-In-Time (JIT)]]. <ref>{{Cita web|url=https://pypy.readthedocs.org/en/latest/stackless.html|sito=pypy.readthedocs.org}}</ref>
==
Sebbene
Stackless è ampiamente utilizzato nell'implementazione del
== Note ==
Riga 43:
* [https://kalogirou.net/2005/08/10/multithreaded-game-scripting-with-stackless-python/ Multithreaded Game Scripting with Stackless Python] by Harry Kalogirou
* [https://web.archive.org/web/20121108011701/http://zope.stackless.com/spcpaper.htm Continuations and Stackless Python] by Christian Tismer
{{Portale|Informatica|Software libero}}
|