Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Stackless Python - Teknopedia
Stackless Python - Teknopedia
Stackless Python
software
Genere
SviluppatoreAnselm Kruis (sviluppatore), Christian Tismer (autore originale)
Data prima versione1998
Ultima versione3.8.1-slp (22 gennaio 2020)
Ultima beta3.9.0 alpha 0
Sistema operativoLinux
macOS
Microsoft Windows
LinguaggioC
Python
LicenzaPython Software Foundation License
(licenza libera)
Sito webgithub.com/stackless-dev/stackless/wiki
Modifica dati su Wikidata · Manuale

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 stack. [1]

Stackless, inoltre, supporta le coroutine e i 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 CSP (Communicating Sequential Processes) permettendo di scambiare dati tra diversi task in modo sicuro e sincronizzato.

Design

[modifica | modifica wikitesto]

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 singolo core della CPU. Pertanto, rappresentano un'alternativa alla programmazione asincrona basata sugli 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 (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 parallelismo risulta limitato (la preemption non inizialmente disponibile in Stackless è stata introdotta seppur in forma limitata). [2]

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.

La maggior parte delle funzionalità di Stackless sono state implementate anche in PyPy, un interprete Python che agisce anche come compilatore Just-In-Time (JIT). [3]

Impiego

[modifica | modifica wikitesto]

Sebbene Stackless sia una un'installazione completa e indipendente, la sua funzionalità di commutazione è stata mutuata con successo come estensione CPython chiamata greenlet. [4] Viene utilizzato da numerose librerie (ad esempio gevent [5]) per fornire una soluzione di threading ecologica per CPython.

Stackless è ampiamente utilizzato nell'implementazione del videogioco MMORPG sandbox ambientato nello spazio EVE Online. Anche IronPort, azienda nota per le sue innovative soluzioni di sicurezza per la posta elettronica, ha sfruttato la potenza di Stackless Python per costruire sistemi altamente efficienti e scalabili.

Note

[modifica | modifica wikitesto]
  1. ^ Archived at Ghostarchive and the Filmato audio https://web.archive.org/web/20140103062231/http://www.youtube.com/watch?v=pDkrkP0yf70. URL consultato il 20 novembre 2024 (archiviato dall'url originale il 3 gennaio 2014). Parametro titolo vuoto o mancante (aiuto): Filmato audio https://www.youtube.com/watch?v=pDkrkP0yf70. Parametro titolo vuoto o mancante (aiuto)
  2. ^ Copia archiviata, su bitbucket.org. URL consultato il 20 novembre 2024 (archiviato dall'url originale il 23 giugno 2020).
    «a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively.»
  3. ^ pypy.readthedocs.org, https://pypy.readthedocs.org/en/latest/stackless.html Titolo mancante per url url (aiuto).
  4. ^ greenlet.readthedocs.org, https://greenlet.readthedocs.org/en/latest/ Titolo mancante per url url (aiuto).
  5. ^ www.gevent.org, https://www.gevent.org Titolo mancante per url url (aiuto).

Collegamenti esterni

[modifica | modifica wikitesto]
  • Sito ufficiale, su github.com. Modifica su Wikidata
  • Stackless Python Documentation for: 3.7-slp, 3.6-slp, 3.5-slp, 3.4-slp, 2.7-slp
  • (EN) Stackless Python, su GitHub.
  • Multithreaded Game Scripting with Stackless Python by Harry Kalogirou
  • Continuations and Stackless Python by Christian Tismer
  Portale Informatica
  Portale Software libero
Estratto da "https://it.wikipedia.org/w/index.php?title=Stackless_Python&oldid=146497128"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022