Stackless Python - Stackless Python
![]() | Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto problémech na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
Původní autoři | Christian Tismer |
---|---|
Vývojáři | Anselm Kruis |
První vydání | 1998 |
Stabilní uvolnění | 3.7.4-slp, 3.6.9-slp, 2.7.16-slp / 4. srpna 2019 |
Náhled verze | 3.8.0b3[1] |
Úložiště | ![]() |
Napsáno | C, Krajta |
Operační systém | Linux, Okna |
Typ | Tlumočník |
Licence | Licence Python Software Foundation |
webová stránka | http://www.stackless.com |
Stackless Pythonnebo Bez zásobníku, je Programovací jazyk Python tlumočník, tak pojmenovaný, protože se vyhýbá v závislosti na C zásobník volání pro svůj vlastní stack. V praxi používá Stackless Python zásobník C, ale zásobník je mezi voláními funkcí vymazán.[2] Nejvýznamnějším rysem Stackless je mikrovlákna, které zabraňují velké části režie spojené s obvyklým operačním systémem vlákna. Kromě funkcí Pythonu přidává Stackless také podporu pro coutiny, komunikace kanály a úkol serializace.
Design
U Stackless Pythonu je spuštěný program rozdělen na mikrozávity, které jsou spravovány samotným překladačem jazyků, nikoli operačním systémem jádro —přepínání kontextu a plánování úkolů se provádí čistě v tlumočníkovi (považují se tedy také za formu zelené vlákno ). Mikroprocesy spravují provádění různých dílčích úkolů v programu na stejném jádru CPU. Jsou tedy alternativou k asynchronnímu programování založenému na událostech a také se vyhýbají režii používání samostatných vláken pro jednojádrové programy (protože není nutné provádět žádné přepínání režimu mezi režimem uživatele a režimem jádra, takže lze snížit využití procesoru).
Ačkoli mikrovlákna usnadňují vypořádání se se spuštěním dílčích úkolů na jednom jádru, Stackless Python neodstraní Pythonovy Globální tlumočnický zámek, ani nepoužívá více vláken a / nebo procesů. Takže to umožňuje pouze kooperativní multitasking na sdíleném CPU a ne rovnoběžnost (Preempce původně nebyla k dispozici, ale nyní je v nějaké formě[3]). Chcete-li použít více jader CPU, je stále potřeba vybudovat meziprocesový komunikační systém nad procesy Stackless Python.
Kvůli značnému počtu změn ve zdroji nelze Stackless Python nainstalovat na již existující instalaci Pythonu jako rozšíření nebo knihovna. Je to místo toho úplná distribuce Pythonu sama o sobě. Většina funkcí Stackless byla také implementována v PyPy, a vlastní hosting Tlumočník jazyka Python a Překladač JIT.[4]
Použití
Ačkoli celá Stackless je samostatná distribuce, její přepínací funkce byla úspěšně zabalena jako CPython rozšíření nazvané greenlet.[5] Používá ji řada knihoven (např. Gevent[6]) poskytnout a zelené navlékání řešení pro CPython. Python od té doby obdržel nativní řešení pro zelená vlákna: čekat / async.
Stackless se hojně používá při implementaci Eve online masivně multiplayerová online hra i v IronPort poštovní platforma.
Viz také
Reference
- ^ Stackless Python programovací jazyk, Stackless Python, 2019-11-14, vyvoláno 2019-11-14
- ^ https://www.youtube.com/watch?v=pDkrkP0yf70
- ^ „About Stackless“. Citováno 26. srpna 2016.
je integrován plánovač cyklického obměňování. Lze jej použít k plánování úkolů buď kooperativně, nebo preventivně.
- ^ "Funkce na úrovni aplikace bez zásobníku - dokumentace PyPy". pypy.readthedocs.org.
- ^ "greenlet: Lehké souběžné programování - dokumentace greenlet 0.4.0". greenlet.readthedocs.org.
- ^ "Co je to gevent? - dokumentace gevent 1.3.0.dev0". www.gevent.org.
externí odkazy
- Oficiální webové stránky
- Stackless Python Documentation for: 3,7 slp, 3,6-slp, 3,5 slp, 3,4-slp, 2,7 slp
- bez zásobníku na GitHub
- Vícevláknové skriptování her pomocí Pythonu bez zásobníku Harry Kalogirou
- Pokračování a Stackless Python Christian Tismer