Pajton (Stackless)
Pajton (Stackless) | |
---|---|
Originalni naziv | engl. Stackless Python |
Izgovara se | Stekles Pajton |
Model | imperativni, objektno-orijentisani, funkcionalni |
Autor(i) | Kristijan Tismer |
Dijalekti | Pajton (Stackless), RPython |
Uticaji | C, Pajton |
Licenca | Licenca Fondacije Pajton Softvera |
Veb-sajt | http://www.stackless.com/ |
Stackless Pajton, ili Stackless, je interpretator Pajton programskog jezika, tako nazvan jer izbegava zavisnost od C da zove svoj sopstveni stek. Jedna od najistaknutijih mogućnosti ovog jezika su mikronitne, koje izbegavaju većinu opštih troškova povezanih sa nitnama operativnog sistema. Kao dodatak Pajtonovim mogućnostima, Stackless takođe dodaje podršku za korutine, komunikaciju između kanala i serijalizacija zadataka.
Dizajn
[uredi | uredi izvor]Sa Pajtonom Stackless, pokrenuti program je razdvojen na mikronitne koje su održavane od strane samog interpretatora jezika, ne od jezgra operativnog sistema—zamena konteksta i raspoređivanje su izvršeni isključivo u interpretatoru. Mikronitne održavaju izvršavanje različitih podzadataka u programu na istom jezgru procesora. Time, oni su i alternativa asinhronizovanim programima koji su bazirani na događajima, i takođe zaobilaze opšte troškove zbog korišćenja različitih nitni za programe za jedno jezgro (zato što nije potrebno menjati modove između korisničkog i jezgarnog, time korišćenje samog jezgra može biti smanjeno).
Iako mikronitne čine pokretanje podzadataka na jednom zegru mnogo lakše, Stackless Pajton niti briše Pajtonov Globalni Katanac niti se koristi višenitnama i/ili procesima. Time samo dozvoljava kooperativni multitasking na zajedničkom procesoru bez paralelne obrade. Da bi se koristili višejezgarni procesoru, osoba bi morala i dalje da napravi unutrašnje procesornu komunikaciju preko procesa Pajtona Stackless.
Zbog velikog broja promena u izvornom kodu, Stackless Pajton ne može biti instaliran na već postojeću Pajton instalaciju kao ekstenzija ili ekstenzija ili biblioteka. Umesto toga je kompletna Pajton distribucija sama po sebi. Većina mogućnosti Stackless-a su takođe ubačena u PyPy, samo-održivi Pajton interpretator i JIT kompajler.[1]
Korist
[uredi | uredi izvor]Iako je celokupni Stackless posebna distribucija, njegova mogućnost menjanja funkcionalnosti je uspešno upakovana kao CPython ekstenzija nazvana greenlet. Korišćena je u velikom broju biblioteka (npr. gevent) da se omogući "zeleno nitnovanje" rešenje za CPython.
Stackless je veoma korišćen u implementaciji Eve Online masivne onlajn igrice za više igrača kao i u poštanskoj platformi IronPort.
Vidi još
[uredi | uredi izvor]- Erlang (programski jezik)
- Limbo (programski jezik)
- Go (programski jezik)
- SCOOP (softver)
Reference
[uredi | uredi izvor]Spoljašnje veze
[uredi | uredi izvor]- Zvanični veb-sajt
- Multithreaded Game Scripting with Stackless Python od Harija Kalogiroua
- Continuations and Stackless Python od Kristijana Tismera
![]() |
This programming-language-related article is a stub. You can help Wikipedia by expanding it. |