Stor Python-endring nærmer seg: – Suverent å ha fått det inn i main!

Denne uken tok Python et stort steg i retning av å fjerne en løsning som har hindret effektiv flertrådskjøring. Python-ekspert Leon Sandøy jubler.

Leon "Lemon" Sandøy er en av grunnleggerne av verdens største Python-discord. 📸: Privat
Leon "Lemon" Sandøy er en av grunnleggerne av verdens største Python-discord. 📸: Privat Vis mer

Programmeringsspråket Python har en omdiskutert mekanisme som sørger for at språket ikke kan kjøre i mer enn én CPU-tråd av gangen. Mekanismen kalles GIL – Global Interpreter Lock – og i fjor høst gikk Python Steering Council med å på å fjerne GIL fra Python.

Denne uken rykket fjerningen av GIL enda et steg nærmere realitet, etter at kode for å skru av GIL ble merget inn i python:main. Det skriver DevClass.

Det får Python-ekspert Leon Sandøy til å juble. Han er Chief Technical Officer på ion8 og en av grunnleggerne av verdens største Python-discord, pythondiscord.org.

– Det er suverent at vi allerede i mars har fått dette inn i main! Målet er jo at dette skal være med i Python 3.13, som slippes i oktober i år, og da er det om å gjøre å teste så tidlig og så mye som mulig, sier Sandøy til kode24.

Det at endringer nå merges inn i main tolker han som at man ligger litt foran skjema, og at man ligger godt an til å klare å få den med i versjon 3.13.

En betydelig endring i Python

Forslaget om å gjøre GIL valgfritt kalles PEP 703. Å kunne skru av GIL betyr blant annet at man vil kunne skrive Python-programmer som kjører i mange CPU-tråder samtidig.

– Dette er relevant i mange settinger, spesielt innen AI, ML, og data science. Den alminnelige Python-utvikleren har nok som oftest ikke et stort behov for å implementere ekte multithreading, og vil klare seg godt med såkalte "grønne tråder", som i asyncio.

– Men det er mange populære moduler der ute – som numpy og PyTorch – som har gitt utrykk for at dette vil føre til store endringer for dem, sier Sandøy.

«Dette er en betydelig endring i noen av Pythons dypeste kodehvelv, og her må man virkelig trå forsiktig.»

GIL vil imidlertid ikke bli skrudd av over natten, men i første omgang gjelde Python-runtimes bygget med konfigurasjonsflagget --disable-gil. Det vil med andre ord ikke påvirke vanlige installasjoner som man henter fra Python.org, bare runtimes som er bygget fra kildekode.

– Dette er en betydelig endring i noen av Pythons dypeste kodehvelv, og her må man virkelig trå forsiktig. Det er nok mange på CPython's core dev team som syntes dette er nesten like skremmende som det er spennende!

Kan komme til å rulle tilbake

Selv om Python uten GIL i starten vil ligge bak et flagg, er målet ifølge Sandøy at GIL skal være av som standard – men det skjer i hvert fall ikke før Python 3.13 i oktober. Eller kanskje enda senere, avhengig av hvordan testingen går.

– Steering Council har vært veldig tydelige på at denne PEP-en skal rulles ut på en forsiktig og forsvarlig måte, og at alle endringer som skaper betydelige forstyrrelser for Python-økosystemet skal rulles tilbake. De har til og med tatt til orde for at de vil rulle tilbake hele PEP 703 om nødvendig.

Men Python uten GIL vil forenkle livet ganske mye for de som vedlikeholder en del populære moduler, som nevnte numpy og PyTorch. Mange av disse modulene har per i dag flere komplekse "workarounds" som er designet for å komme seg rundt begrensningene som GILen påfører dem, for eksempel via C- og C++-extensions, eller andre metoder som er avhengige av eksterne programmeringsspråk og verktøy.

– Dette vil i beste fall være mye vanskeligere å vedlikeholde, og i verste fall medføre betydelige begrensninger for hva brukerene faktisk kan gjøre med API-en til disse modulene, forklarer Sandøy.

Kan vente oss mye nytt

På sikt vil fjerningen av GIL føre til at mange populære moduler vil få ny funksjonalitet, bedre ytelse og være lettere å videreutvikle og vedlikeholde.

Det kan også føre til at en del kodebaser som idag er skrevet i for eksempel C++ for å møte stive ytelseskrav kan skrives i Python om ikke så lenge.

– Det er svært gode nyheter for Python's økosystem, spesielt innen vitenskap og kunstig intelligens! avslutter Sandøy.