Stackless Python - Stackless Python
| Opprinnelige forfatter (e) | Christian Tismer |
|---|---|
| Utvikler (er) | Anselm Kruis |
| Første utgivelse | 1998 |
| Stabil utgivelse | 3.7.5-slp, 3.6.9-slp, 2.7.17-slp / 22. januar 2020
|
| Preview release | 3.8.0b3
|
| Oppbevaringssted |
|
| Skrevet i | C , Python |
| Operativsystem | Linux , Windows |
| Type | Tolk |
| Tillatelse | Python Software Foundation License |
| Nettsted | http://www.stackless.com |
Stackless Python , eller Stackless , er en Python-programmeringsspråktolk , så navngitt fordi den unngår avhengig av C- samtalestakken for sin egen stack. I praksis bruker Stackless Python C-stabelen, men stabelen blir ryddet mellom funksjonskall. Det mest fremtredende trekk ved Stablingsfri er mikrogjengene som fjerner mye av den overliggende forbundet med vanlige operativsystem tråder . I tillegg til Python funksjoner, Stablingsfri gir også støtte for coroutines , kommunikasjonskanaler , og oppgave serialisering .
Design
Med Stackless Python blir et løpende program delt inn i mikrotråder som administreres av selve språketolken, ikke operativsystemets kjerne - kontekstbytte og oppgaveplanlegging gjøres utelukkende i tolken (disse blir dermed også sett på som en form for grønn tråd ) . Mikrotråder styrer utførelsen av forskjellige underoppgaver i et program på samme CPU-kjerne. Dermed er de et alternativ til hendelsesbasert asynkron programmering og unngår også kostnadene ved å bruke separate tråder for enkeltkjerneprogrammer (fordi det ikke er behov for å bytte modus mellom brukermodus og kjernemodus, slik at CPU-bruken kan reduseres).
Selv om mikrotråder gjør det lettere å håndtere løpende underoppgaver på en enkelt kjerne, fjerner ikke Stackless Python CPythons Global Interpreter Lock , og bruker heller ikke flere tråder og / eller prosesser. Så det tillater bare samarbeidende multitasking på en delt CPU og ikke parallellitet (innløsning var opprinnelig ikke tilgjengelig, men er nå i en eller annen form). For å bruke flere CPU-kjerner, må man fremdeles bygge et interprosess kommunikasjonssystem på toppen av Stackless Python-prosesser.
På grunn av det store antallet endringer i kilden, kan ikke Stackless Python installeres på en eksisterende Python-installasjon som en utvidelse eller et bibliotek . Det er i stedet en komplett Python-distribusjon i seg selv. Flertallet av Stackless-funksjonene er også implementert i PyPy , en Python-tolk og JIT-kompilator som er vertskap for selv .
Bruk
Selv om hele Stackless er en separat distribusjon, har byttefunksjonaliteten blitt pakket som en CPython- utvidelse kalt greenlet. Den brukes av en rekke biblioteker (f.eks. Gevent) for å gi en grønn trådløsning for CPython. Python har siden mottatt en innfødt løsning for grønne tråder: wait / async.
Stackless brukes mye i implementeringen av Eve Online massivt multiplayer online spill så vel som i IronPorts e-postplattform.
Se også
- Erlang (programmeringsspråk)
- Limbo (programmeringsspråk)
- Go (programmeringsspråk)
- SCOOP (programvare)
Referanser
Eksterne linker
-
Offesiell nettside
- Stackless Python-dokumentasjon for: 3,7-slp , 3,6-slp , 3,5-slp , 3,4-slp , 2,7-slp
- stabelfri på GitHub
- Multithreaded Game Scripting with Stackless Python av Harry Kalogirou
- Continuations and Stackless Python av Christian Tismer