U Pythonu već raspravljaju o prijedlogu za uklanjanje GIL-a i postizanje boljih performansi

Python logotip

Python je programski jezik visoke razine.

Nedavno je objavljena vijest da je Upravni odbor projekta Python najavio je svoju želju da odobri Prijedlog proširenja jezika Python «PEP-0703″, čime globalno zaključavanje tumača postaje izborno u CPythonu i koje u osnovi definira ugradnju CPython načina kompajliranja bez Globalnog zaključavanja tumača (GIL).

PEP-0703 definira prestanak korištenja GIL-a prema zadanim postavkama, ali dodajte opciju izgradnje "–sin-gil" da je onemogućite. Kako sil Očekuje se da će novi način riješiti problem s paralelizacijom operacija na višejezgrenim sustavima, uzrokovano činjenicom da globalno zaključavanje ne dopušta paralelni pristup zajedničkim objektima iz različitih niti.

Spominje se da dugoročno (nakon 5 godina), ljuska se prema zadanim postavkama planira promijeniti samo u globalni način rada bez zaključavanja, dok u isto vrijeme odbacuje podršku za kompajliranje s GIL-om.

Hvala svima što ste odgovorili na anketu o prijedlogu bez GIL-a. Jasno je da je opći osjećaj pozitivan, kako za opću ideju tako i za PEP 703 posebno. Upravni odbor također je uglavnom pozitivan o oba. Namjeravamo prihvatiti PEP 703, iako još uvijek razrađujemo detalje prihvaćanja.

Kao što smo učinili nekoliko puta u prošlosti, želimo priopćiti svoju namjeru da prihvatimo PEP zajedno s našim trenutnim razmišljanjem o detaljima vezanim uz prihvaćanje.

Osim toga, Navodi se da su izmjene koje se planiraju provesti u tri faze, tj. koji su kratkoročni, srednjoročni i dugoročni. S obzirom na to u prvoj fazi, onemogućavanje GIL-a prema zadanim postavkama je nepraktično zbog režijskih troškova povezanih s promjenama skupljača smeća, sustava upravljanja memorijom i primitiva za organiziranje zaključavanja. Na primjer, zbog upotrebe brojanja referenci za izolaciju niti, dolazi do pada performansi za jednonitne skripte (u testnom paketu pyperformance za 10%). U isto vrijeme, možda će biti potrebno onemogućiti GIL u znanstvenom računalstvu, za koje je nedostatak paralelizacije ozbiljniji problem od linearne brzine izvršavanja koda.

U drugoj fazi, uglavnom će se čekati potvrda. te da postoji dovoljna podrška zajednice kako bi se upotreba "non-GIL je održiva" i provjerite je li GIL-less build podržan, ali nije zadani.

U posljednjoj fazi, no-GIL će već biti zadana vrijednost i svi ostaci GIL-a bit će uklonjeni (bez nepotrebnog prekida kompatibilnosti unatrag).

Primjećuje se da rad na udaljavanju od GIL-a bit će obavljen vrlo pažljivo kako se ne bi ponovila pogreška što se dogodilo prilikom promocije Python 3: Izrada koja nije GIL morat će osigurati kompatibilnost sa starijim verzijama Pythona, a sve promjene koda treće strane koje su potrebne za rad na izvedbama koje nisu GIL također bi trebale raditi na GIL izvedbama.

Nema planova za prenumeriranje verzija na Python 4 za gradnje koje nisu GIL, jer će zadržati ABI kompatibilnost.

Tijekom procesa, mi (glavni programeri, ne samo SC) morat ćemo ponovno procijeniti napredak i predložene vremenske rokove. Ne želimo da ovo postane još jedna desetogodišnja borba za kompatibilnost unatrag i želimo biti u mogućnosti otkazati PEP 703 i pronaći drugo rješenje ako se čini da postaje problematično, stoga moramo redovito provjeravati isplati li se nastaviti s radom.

Nadamo se da će ovo razjasniti budućnost PEP-a dok razrađujemo točne detalje prihvaćanja. SC će raditi na dovršetku prihvaćanja u nadolazećim tjednima.

Prije potpunog prijelaza na gradnje bez GIL-a, planiramo postići potpunu podršku zajednice za te gradnje, kao i osigurati dodatne C API-je i Python API-je kako bismo omogućili sigurno višenitnost u postojećem kodu.

Konačno, kao što je već spomenuto, očekuje se da se prijelaz na treću fazu može dogoditi za najmanje 5 godina, a vjerojatni datum za PEP-0703 je izdanje Pythona 3.13, zakazano za sljedeću jesen.

Naps zainteresiran za saznanje više o tome, možete provjeriti detalje U sljedećem linku.


Dodaj kao preferirani izvor