I Python diskuterar de redan förslaget att ta bort GIL och få bättre prestanda

Python-logotyp

Python är ett programmeringsspråk på hög nivå.

Nyheten kom nyligen att Python Project Steering Committee har meddelat sin önskan att godkänna Python-språktilläggsförslag «PEP-0703″, vilket gör det globala tolklåset valfritt i CPython och som i grunden definierar inbäddningen av CPythons kompileringsläge utan Global Interpreter Lock (GIL).

PEP-0703 definierar att sluta använda GIL som standard, men lägg till byggalternativet "–sin-gil" för att inaktivera det. Hur mår dul Det nya läget förväntas lösa problemet med parallellisering av operationer på flerkärniga system, orsakat av det faktum att det globala låset inte tillåter parallell åtkomst till delade objekt från olika trådar.

Det nämns att på lång sikt (efter 5 år), tolken är planerad att ändras som standard till endast i globalt icke-låsande läge, samtidigt som stödet för kompilering med GIL tappas.

Tack alla för att ni svarat på enkäten om no-GIL-förslaget. Det är tydligt att den allmänna känslan är positiv, både för den allmänna idén och för PEP 703 i synnerhet. Styrelsen är också till stor del positiv till båda. Vi har för avsikt att acceptera PEP 703, även om vi fortfarande håller på att utarbeta detaljerna för acceptans.

Som vi har gjort några gånger tidigare vill vi kommunicera vår avsikt att acceptera PEP tillsammans med vårt nuvarande tänkande om detaljerna relaterade till acceptans.

Förutom det, Det nämns att de förändringar som planeras genomföras i tre etapper, som är kort, medellång och lång sikt. Givet att i det första steget är det opraktiskt att inaktivera GIL som standard på grund av de omkostnader som är förknippade med förändringar av sopsamlaren, minneshanteringssystemet och primitiverna för att organisera lås. Till exempel, på grund av användningen av referensräkning för trådisolering, sker en prestandaminskning för enkeltrådade skript (i pyperformance-testsviten med 10%). Samtidigt kan det vara nödvändigt att inaktivera GIL i vetenskaplig beräkning, för vilken bristen på parallellisering är ett allvarligare problem än den linjära hastigheten för kodexekvering.

I det andra steget kommer i princip bekräftelsen att inväntas. och att det finns tillräckligt med stöd från samhället så att användningen av "icke-GIL är lönsamt" och se till att GIL-less build stöds men inte standard.

I det sista steget kommer no-GIL redan att vara standardvärdet och alla rester av GIL kommer att tas bort (utan att onödigt bryta bakåtkompatibiliteten).

Det observeras att arbetet med att flytta bort från GIL kommer att göras mycket noggrant för att inte upprepa misstaget vad som hände vid marknadsföring python 3: En icke-GIL-build måste säkerställa kompatibilitet med äldre versioner av Python, och alla kodändringar från tredje part som krävs för att fungera på icke-GIL-builder bör också fungera på GIL-builder.

Det finns inga planer på att numrera om versionerna till Python 4 för icke-GIL-byggen, eftersom de kommer att bibehålla ABI-kompatibilitet.

Under hela processen kommer vi (kärnutvecklarna, inte bara SC) att behöva omvärdera framstegen och föreslagna tidslinjer. Vi vill inte att detta ska bli ytterligare en tioårig bakåtkompatibilitetskamp, ​​och vi vill kunna avbryta PEP 703 och hitta en annan lösning om det verkar bli problematiskt, så vi måste regelbundet kontrollera att fortsatt arbete är värt det.

Vi hoppas att detta ger lite klarhet om PEP:s framtid när vi tar fram de exakta detaljerna för acceptans. SC kommer att arbeta för att slutföra godkännandet under de kommande veckorna.

Innan den fullständiga övergången till icke-GIL-builds planerar vi att uppnå fullt community-stöd för dessa builds, samt tillhandahålla ytterligare C API:er och Python API:er för att möjliggöra säker multithreading i befintlig kod.

Slutligen, som redan nämnts, förväntas det att övergången till det tredje steget kan ske om minst 5 år och det troliga datumet för PEP-0703 är utgivningen av Python 3.13, planerad till nästa höst.

Om du är det intresserad av att veta mer om detkan du kontrollera detaljerna I följande länk.


Lägg till som prioriterad källa