Python Stearing Council har annonsert at de antagelig kommer til å akseptere et forslag om å fjerne GIL (Global Interpreter Lock) fra Python, noe som vil gjøre det mulig å skrive mer effektiv kode med flertrådskjøring.
Leon Sandøy er Chief Technical Officer på ion8 og en av grunnleggerne av Python-discorden, som har snart 400.000 medlemmer.
Sandøy mener en mulig fjerning av GIL er spesielt aktuelt nå som Python har blitt et veldig aktuelt programmeringsspråk i forbindelse med maskinlæring og kunstig intelligens.
– I mange moderne programmeringsspråk er dette med å kjøre mange CPU-tråder hovedstrategien som benyttes til parallelisering av krevende oppgaver. Det er et nøkkelkonsept for å redusere gjennomføringstiden til CPU-tunge prosesser, for eksempel innen AI og ML, sier Sandøy til kode24.
Unngår "race conditions"
– Kan du kort forklare hva GIL er, og hvorfor det har vært nødvendig?
– Global Interpreter Lock er en mekanisme som forsikrer at en CPython-interpreter ikke kan kjøre i mer enn én CPU-tråd om gangen. Dette ble introdusert for å garantere "thread safety", altså i hovedsak for å unngå alle utvikleres verste mareritt – race conditions.
Sandøy forklarer at årsaken til at noen mente GIL var nødvendig, kanskje hadde litt å gjøre med teknologien CPython var basert på.
– For eksempel er ikke C-compileren som CPython i alle år har benyttet "thread safe", og denne må byttes dersom vi skal fjerne GILen.
React i Python: «All hells combined!»
Påvirker ikke vanlige Python-utviklere
Det har i løpet av årene blitt introdusert mange alternative strategier for parallelisering, blant annet såkalte "grønne tråder", via for eksempel asyncio, forteller Sandøy.
Med grønne tråder kan én enkelt tråd sjonglere mange oppgaver. En annen mulighet er multiprocessing, der man spinner opp mange seperate Python-kjøremiljøer og prøver å delegere oppgaver til disse fra en sjefsprosess.
– Disse alternative strategiene har stor verdi i mange tilfeller, men har betydelige baksider i andre tilfeller.
«Ofte har de løst dette problemet ved å utvikle deler av produktet sitt i andre språk, gjerne c++.»
– Hva vil det bety for Python-programmere at Python-teamet nå ser ut til å fjerne GIL fra Python?
– GIL-en er nok ikke noe som påvirker den allmenne Python-utvikleren så veldig ofte, og de fleste alminnelige behov kan møtes med en av de alternative paralelliseringsstrategiene.
– Men for AI/ML-utvikling på høyt nivå og andre akademiske formål, og ikke minst for Pythons mange modul- og bibliotekutviklere, så har dette vært et stort problem. Ofte har de løst dette problemet ved å utvikle deler av produktet sitt i andre språk, gjerne C++, sier Sandøy.
Fjerning vil skje sakte
Selv om Python Steering Council har sagt at de "har som intensjon å akseptere PEP 703", forslaget om å gjøre GIL valgfritt, sier Sandøy at hvis den blir fjernet så kommer det til å skje sakte og forsiktig.
– Steering Council har indikert fem år eller mer som en pekepinn før det kan bli standard.
Sandøy tror det vil bli sluppet som en eksperimentell ekstrafunksjon i versjon 3.13 eller 3.14. Senere, etter at versjonen uten GIL har fått utbredt støtte blant alle de viktigste modulene i økosystemet, kan det bli aktuelt at den blir den nye standardversjonen av Python, tror han.
– De har også sagt krystallklart ifra at det ikke kommer til å skje dersom de ikke kan garantere tilnærmet perfekt bakoverkompatibilitet.
Python Steering Council understreker også at "dette er ikke Python 4".
Utbrent PyPi-admin måtte gi opp etter flom av skadevare
Python blir mer attraktivt
Selv om fjerning av GIL er noe vanlige Python-utviklere ikke vil merke noe særlig til, vil de som er opptatt av parallellisering kunne få spennende nye metoder de kan bruke til dette.
– Python kan bli et mye mer attraktivt språk blant forskere og forskningsgrupper i tech-verdenen, som for eksempel DeepMind og lignende.
Helt problemfritt er det imidlertid ikke. Sandøy mener den største ulempen med å godta forslaget er at det er en omfattende endring som vil kreve mye utvikling og vedlikehold.
Mens endringen har eksperimentell status vil man i prinsippet måtte vedlikeholde to versjoner av Python side om side.
– Dette er kostbart for en gruppe frivillige som har begrensede ressurser. Hvis belastningen blir for stor har Steering Council sagt at de ikke kommer til å nøle med å avbryte prosjektet, advarer Sandøy.
«Python kan bli et mye mer attraktivt språk blant forskere og forskningsgrupper i tech-verdenen.»
– Jeg er imponert!
Sandøys personlige mening er at PEP 703 er et forslag som går mye lengre enn noen tidligere forsøk som den såkalte "GILektomien" i å kartlegge alle faktorene som må tas i betraktning dersom dette skal gjennomføres.
Han mener dokumentet er kjempespennende, og at det også er veldig positivt at forfatteren har implementert forslaget i et åpent git-repo som demonstrerer løsningen.
– Jeg er veldig imponert over responsen til Steering Council, de har vært metodiske og forsiktige, men velger å påta seg en del risiko for å gjøre noe som kan bety veldig mye for språkets fremtid, spesielt til akademiske formål. Det står det respekt av.
Sandøy tror endringen kan bidra til å forlenge levetiden til Python-språket, og gjøre det mer aktuelt å bruke for fremtidens mange utviklere innenfor AI og maskinlæring.
– Dette har vært en snakkis i mange tiår, og det er kjempespennende at det endelig skjer noe stort på denne fronten.
– Jeg håper dette går gjennom, og gleder meg til å teste ut ekte parallellisering i 3.13 for noen av mine egne prosjekter, avslutter Sandøy.