Stackless Python - Stackless Python

Stackless Python
Opprinnelige forfatter (e) Christian Tismer
Utvikler (er) Anselm Kruis
Første utgivelse 1998 ; 23 år siden  ( 1998 )
Stabil utgivelse
3.7.5-slp, 3.6.9-slp, 2.7.17-slp / 22. januar 2020 ; For 15 måneder siden  ( 2020-01-22 )
Preview release
3.8.0b3
Oppbevaringssted Rediger dette på Wikidata
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å

Referanser

Eksterne linker