A Pythonban már megvitatják a GIL eltávolítását és a jobb teljesítmény elérését

Python logó

A Python egy magas szintű programozási nyelv.

Nemrég felröppent a hír, hogy a A Python Projekt Irányító Bizottság bejelentette, hogy jóváhagyja a Python nyelvbővítési javaslat «PEP-0703″, amely opcionálissá teszi a globális értelmezőzárat a CPythonban, és amely alapvetően meghatározza a CPython fordítási mód beágyazását Global Interpreter Lock (GIL) nélkül.

PEP-0703 alapértelmezés szerint leállítja a GIL használatát, de a letiltásához add hozzá a „–sin-gil” build opciót. Hogy vagyl Az új mód a párhuzamosítással várhatóan megoldja a problémát műveletek többmagos rendszereken, aminek oka az a tény, hogy a globális zárolás nem teszi lehetővé a párhuzamos hozzáférést a különböző szálakból származó megosztott objektumokhoz.

Megemlítik, hogy hosszú távon (5 év után) az értelmezőt a tervek szerint alapértelmezés szerint csak globális, nem zárolásos módra módosítják, ugyanakkor megszűnik a GIL-lel történő fordítás támogatása.

Köszönjük mindenkinek, hogy válaszolt a no-GIL javaslattal kapcsolatos felmérésre. Nyilvánvaló, hogy az általános vélemény pozitív, mind az általános elképzelés, mind pedig különösen a PEP 703 tekintetében. Az Igazgatóság is nagyrészt pozitívan áll mindkettőhöz. A PEP 703-at szándékozunk elfogadni, bár az elfogadás részleteit még dolgozzuk ki.

Ahogy azt már néhányszor megtettük, most is közölni kívánjuk a PEP elfogadási szándékunkat, valamint az elfogadással kapcsolatos részletekkel kapcsolatos jelenlegi gondolkodásunkat.

Amellett, hogy, Megemlítik, hogy a három ütemben végrehajtani tervezett változtatások, amelyek rövid, közép- és hosszú távúak. Tekintettel arra az első szakaszban a GIL alapértelmezés szerinti letiltása nem praktikus a szemétgyűjtő, a memóriakezelő rendszer és a zárak rendszerezési primitívei változtatásaival járó rezsi miatt. Például a szálelválasztáshoz használt referenciaszámlálás miatt az egyszálú szkriptek teljesítménye csökken (a pyperformance tesztcsomagban 10%-kal). Ugyanakkor szükség lehet a GIL letiltására a tudományos számítástechnikában, amelynél a párhuzamosítás hiánya komolyabb probléma, mint a kódvégrehajtás lineáris sebessége.

A második szakaszban alapvetően a megerősítést kell várni. és elegendő támogatást kap a közösség ahhoz a "nem GIL életképes" használata és győződjön meg arról, hogy a GIL nélküli build támogatott, de nem alapértelmezett.

Az utolsó szakaszban már a no-GIL lesz az alapértelmezett érték és a GIL minden maradványa el lesz távolítva (a visszafelé kompatibilitás szükségtelen megtörése nélkül).

Megfigyelhető, hogy A GIL-től való eltávolodást nagyon óvatosan kell elvégezni, hogy ne ismétlődjön meg a hiba mi történt az előléptetéskor Python 3: A nem GIL buildnek biztosítania kell a kompatibilitást a Python régebbi verzióival, és a nem GIL buildeken való működéshez szükséges harmadik féltől származó kódmódosításoknak a GIL buildeken is működniük kell.

Nem tervezik a verziók átszámozását Python 4-re a nem GIL-alapú buildek esetében, mivel ezek megtartják az ABI-kompatibilitást.

A folyamat során nekünk (a fő fejlesztőknek, nem csak az SC-nek) újra kell értékelnünk az előrehaladást és a javasolt ütemterveket. Nem akarjuk, hogy ez egy újabb tízéves visszamenőleges kompatibilitási harc legyen, és azt szeretnénk, hogy a PEP 703-at törölhessük és más megoldást találhassunk, ha problémássá válna, ezért rendszeresen ellenőriznünk kell, hogy megéri-e a további munka.

Reméljük, hogy ez némi világosságot ad a PEP jövőjét illetően, miközben kidolgozzuk az elfogadás pontos részleteit. Az SC az elkövetkező hetekben azon dolgozik, hogy az elfogadást véglegesítse.

A nem GIL-alapú buildekre való teljes átállás előtt azt tervezzük, hogy teljes közösségi támogatást érünk el ezekhez a buildekhez, valamint további C API-kat és Python API-kat biztosítunk a meglévő kódok biztonságos többszálú kezelésének lehetővé tétele érdekében.

Végül, ahogy már említettük, várhatóan legalább 5 éven belül megtörténhet az átmenet a harmadik szakaszba, és a PEP-0703 valószínűsíthető dátuma a Python 3.13 jövő őszre tervezett kiadása.

Ha érdekelne többet megtudni róla, ellenőrizheti a részleteket A következő linken.


Hozzáadás előnyben részesített forrásként