Stackless Python | |
---|---|
Typ | Interpret programovacího jazyka Python |
Vývojář | Christian Timmer [1] a spoluautoři [2] |
Zapsáno v | C |
Operační systém | Linux , macOS , Windows , PSP OS [3] |
Nejnovější verze | 3.8.1 [4] ( 11. srpna 2021 ) |
Testovací verze | 3.9.0 alpha 0 [5] ( 11. srpna 2021 ) |
Licence | Licence Python Software Foundation |
webová stránka | stackless.com |
Stackless Python nebo jednoduše Stackless je verze interpretu programovacího jazyka Python , který byl takto pojmenován kvůli odmítnutí použít standardní zásobník volání C ve prospěch vlastního zásobníku. Nejpůsobivější funkcí Stackless jsou mikrovlákna , která zabraňují nadměrné spotřebě systémových prostředků vlastní standardním vláknům operačního systému. Kromě standardních funkcí Pythonu přidává Stackless podporu pro korutiny , komunikační kanály a serializaci úloh.
Překladač Stackless spravuje mikrotoky sám. To pomáhá snížit režii systémových prostředků na vláknech a může výrazně snížit zatížení procesoru v některých situacích, kdy je počet vláken velmi vysoký.
Kvůli značnému počtu změn zdrojového kódu původního CPythonu nelze Stackless nainstalovat jako knihovnu nebo rozšíření interpretu , takže je distribuován jako samostatný interpret Pythonu .
S Stackless Python je spuštěný program rozdělen do mikrovlákna, která jsou spravována samotným jazykovým interpretem, a nikoli jádrem operačního systému - přepínání kontextu a plánování úloh se provádí výhradně v interpretu (takže považováno za formu zeleného vlákna ) . Microthreads řídí provádění různých dílčích úloh v programu na stejném jádru procesoru. Jsou tedy alternativou k asynchronnímu programování založenému na událostech a také se vyhnou režii používání samostatných vláken pro jednojádrové programy (protože není vyžadováno přepínání režimu mezi uživatelským režimem a režimem jádra, takže lze snížit využití CPU).
Zatímco mikrovlákna usnadňují spouštění dílčích úloh na jednom jádru, Stackless Python stále používá globální zámek interpretu (GIL) CPythonu a nepoužívá více vláken a/nebo procesů. Stackless Python tedy umožňuje pouze kooperativní multitasking na sdíleném procesoru, nikoli paralelismus (preempce nebyla původně dostupná, ale nyní je k dispozici v té či oné podobě). Chcete-li používat více procesorových jader, stále musíte vytvořit meziprocesový komunikační systém nad procesy Stackless Python.
Kvůli značnému počtu změn ve zdrojovém kódu nelze Stackless Python nainstalovat jako rozšíření nebo knihovnu jako doplněk k existující implementaci Pythonu CPython. Stackless Python je kompletní samostatná distribuce Pythonu. Většina funkcí Stackless Pythonu byla také implementována v PyPy, samostatném interpretu Pythonu a kompilátoru JIT.
Krajta | |
---|---|
Společenství | |
Implementace | |
jiný |
|