Пајтон (Стацклесс)
Пајтон (Stackless) | |
---|---|
Оригинални назив | енгл. Stackless Python |
Изговара се | Стеклес Пајтон |
Модел | императивни, објектно-оријентисани, функционални |
Аутор(и) | Кристијан Тисмер |
Дијалекти | Пајтон (Stackless), RPython |
Утицаји | C, Пајтон |
Лиценца | Лиценца Фондације Пајтон Софтвера |
Веб-сајт | http://www.stackless.com/ |
Stackless Пајтон, или Stackless, је интерпретатор Пајтон програмског језика, тако назван јер избегава зависност од C да зове свој сопствени стек. Једна од најистакнутијих могућности овог језика су микронитне, које избегавају већину општих трошкова повезаних са нитнама оперативног система. Као додатак Пајтоновим могућностима, Stackless такође додаје подршку за корутине, комуникацију између канала и серијализација задатака.
Дизајн
[уреди | уреди извор]Са Пајтоном Stackless, покренути програм је раздвојен на микронитне које су одржаване од стране самог интерпретатора језика, не од језгра оперативног система—замена контекста и распоређивање су извршени искључиво у интерпретатору. Микронитне одржавају извршавање различитих подзадатака у програму на истом језгру процесора. Тиме, они су и алтернатива асинхронизованим програмима који су базирани на догађајима, и такође заобилазе опште трошкове због коришћења различитих нитни за програме за једно језгро (зато што није потребно мењати модове између корисничког и језгарног, тиме коришћење самог језгра може бити смањено).
Иако микронитне чине покретање подзадатака на једном зегру много лакше, Stackless Пајтон нити брише Пајтонов Глобални Катанац нити се користи вишенитнама и/или процесима. Тиме само дозвољава кооперативни мултитаскинг на заједничком процесору без паралелне обраде. Да би се користили вишејезгарни процесору, особа би морала и даље да направи унутрашње процесорну комуникацију преко процеса Пајтона Stackless.
Због великог броја промена у изворном коду, Stackless Пајтон не може бити инсталиран на већ постојећу Пајтон инсталацију као екстензија или екстензија или библиотека. Уместо тога је комплетна Пајтон дистрибуција сама по себи. Већина могућности Stackless-а су такође убачена у PyPy, само-одрживи Пајтон интерпретатор и JIT компајлер.[1]
Корист
[уреди | уреди извор]Иако је целокупни Stackless посебна дистрибуција, његова могућност мењања функционалности је успешно упакована као CPython екстензија названа greenlet. Коришћена је у великом броју библиотека (нпр. gevent) да се омогући "зелено нитновање" решење за CPython.
Stackless је веома коришћен у имплементацији Eve Online масивне онлајн игрице за више играча као и у поштанској платформи IronPort.
Види још
[уреди | уреди извор]- Erlang (програмски језик)
- Limbo (програмски језик)
- Go (програмски језик)
- SCOOP (софтвер)
Референце
[уреди | уреди извор]Спољашње везе
[уреди | уреди извор]- Званични веб-сајт
- Multithreaded Game Scripting with Stackless Python од Харија Калогироуа
- Continuations and Stackless Python од Кристијана Тисмера