Në Python ata tashmë diskutojnë propozimin për të hequr GIL dhe për të marrë performancë më të mirë

Logoja e Python

Python është një gjuhë programimi e nivelit të lartë.

Kohët e fundit u publikua lajmi se Komiteti Drejtues i Projektit Python ka njoftuar dëshirën e tij për të miratuar Propozimi për zgjerimin e gjuhës Python «PEP-0703″, duke e bërë bllokimin global të përkthyesit opsional në CPython dhe i cili në thelb përcakton futjen e modalitetit të përpilimit të CPython pa Lock Global Interpreter (GIL).

PEP-0703 përcakton ndalimin e përdorimit të GIL si parazgjedhje, por shtoni opsionin e ndërtimit “–sin-gil” për ta çaktivizuar atë. Si jenil Modaliteti i ri pritet të zgjidhë problemin me paralelizimin e operacioneve në sistemet me shumë bërthama, të shkaktuara nga fakti se bllokimi global nuk lejon qasje paralele në objekte të përbashkëta nga fije të ndryshme.

Përmendet se në terma afatgjatë (pas 5 vitesh), shell është planifikuar të ndryshohet si parazgjedhje në vetëm në modalitetin global jo-bllokues, ndërsa në të njëjtën kohë heq mbështetjen për përpilimin me GIL.

Faleminderit të gjithëve që iu përgjigjët sondazhit mbi propozimin jo-GIL. Është e qartë se ndjenja e përgjithshme është pozitive, si për idenë e përgjithshme ashtu edhe për PEP 703 në veçanti. Bordi i Drejtorëve është gjithashtu kryesisht pozitiv për të dyja. Ne synojmë të pranojmë PEP 703, megjithëse jemi ende duke përpunuar detajet e pranimit.

Siç kemi bërë disa herë në të kaluarën, ne duam të komunikojmë qëllimin tonë për të pranuar PEP së bashku me mendimin tonë aktual mbi detajet që lidhen me pranimin.

Përveç kësaj, Përmendet se ndryshimet që janë planifikuar të kryhen në tre faza, të cilat janë afatshkurtra, afatmesme dhe afatgjata. Duke pasur parasysh se në fazën e parë, çaktivizimi i GIL si parazgjedhje është jopraktik për shkak të shpenzimeve të përgjithshme që lidhen me ndryshimet në grumbulluesin e plehrave, sistemin e menaxhimit të memories dhe primitivet për organizimin e bravave. Për shembull, për shkak të përdorimit të numërimit të referencës për izolimin e fijeve, ka një rënie të performancës për skriptet me një fije (në grupin e testit pyperformance me 10%). Në të njëjtën kohë, mund të jetë e nevojshme të çaktivizohet GIL në llogaritjen shkencore, për të cilën mungesa e paralelizimit është një problem më serioz sesa shpejtësia lineare e ekzekutimit të kodit.

Në fazën e dytë, në thelb do të pritet konfirmimi. dhe se ka mbështetje të mjaftueshme nga komuniteti në mënyrë që përdorimi i "jo-GIL është i zbatueshëm" dhe sigurohuni që ndërtimi pa GIL është i mbështetur, por jo i parazgjedhur.

Në fazën e fundit, no-GIL do të jetë tashmë vlera e paracaktuar dhe çdo mbetje e GIL do të hiqet (pa prishur në mënyrë të panevojshme përputhshmërinë prapa).

Observedshtë vërejtur se puna për t'u larguar nga GIL do të bëhet me shumë kujdes në mënyrë që të mos përsëritet gabimi çfarë ndodhi gjatë promovimit Python 3: Një ndërtim jo-GIL do të duhet të sigurojë përputhshmëri me versionet më të vjetra të Python dhe çdo ndryshim i kodit të palëve të treta që kërkohet për të punuar në ndërtime jo-GIL duhet të funksionojë gjithashtu në ndërtimet GIL.

Nuk ka plane për të rinumëruar versionet në Python 4 për ndërtime jo-GIL, pasi ato do të ruajnë pajtueshmërinë ABI.

Gjatë gjithë procesit, ne (zhvilluesit kryesorë, jo vetëm SC) do të duhet të rivlerësojmë progresin dhe afatet kohore të sugjeruara. Ne nuk duam që kjo të bëhet një luftë tjetër dhjetëvjeçare e përputhshmërisë së prapambetur dhe duam të jemi në gjendje të anulojmë PEP 703 dhe të gjejmë një zgjidhje tjetër nëse duket se bëhet problematike, kështu që duhet të kontrollojmë rregullisht nëse puna e vazhdueshme ia vlen.

Shpresojmë që kjo të ofrojë njëfarë qartësie për të ardhmen e PEP-it ndërsa përpunojmë detajet e sakta të pranimit. KS do të punojë për të finalizuar pranimin në javët në vijim.

Përpara kalimit të plotë në ndërtimet jo-GIL, ne planifikojmë të arrijmë mbështetjen e plotë të komunitetit për këto ndërtime, si dhe të ofrojmë API shtesë C dhe Python për të mundësuar multithreading të sigurt në kodin ekzistues.

Së fundi, siç u përmend tashmë, pritet që kalimi në fazën e tretë të ndodhë në të paktën 5 vjet dhe data e mundshme për PEP-0703 është lëshimi i Python 3.13, i planifikuar për vjeshtën e ardhshme.

Dremitje të interesuar të dinë më shumë për të, ju mund të kontrolloni detajet Në lidhjen vijuese.


Shto si burim të preferuar