Python je programovací jazyk na vysoké úrovni.
Nedávno se objevila zpráva, že Řídící výbor projektu Python oznámil své přání schválit Návrh rozšíření jazyka Python «PEP-0703″, díky čemuž je globální zámek interpretu v CPythonu volitelný a který v podstatě definuje vložení režimu kompilace CPythonu bez globálního zámku interpretu (GIL).
PEP-0703 definuje, že ve výchozím nastavení přestane používat GIL, ale přidejte možnost sestavení „–sin-gil“, abyste ji zakázali. Jak se mátel Očekává se, že nový režim vyřeší problém s paralelizací operací na vícejádrových systémech, způsobených tím, že globální zámek neumožňuje paralelní přístup ke sdíleným objektům z různých vláken.
Uvádí se, že v dlouhodobém horizontu (po 5 letech) shell se plánuje ve výchozím nastavení změnit na pouze v globálním nezamykatelném režimu, a zároveň upustit od podpory pro kompilaci s GIL.
Děkujeme všem za odpověď na průzkum týkající se návrhu bez GIL. Je jasné, že obecný sentiment je pozitivní, jak pro obecnou myšlenku, tak pro PEP 703 konkrétně. Představenstvo se k oběma staví také převážně pozitivně. Máme v úmyslu přijmout PEP 703, ačkoli stále pracujeme na podrobnostech přijetí.
Stejně jako již několikrát v minulosti chceme sdělit svůj záměr přijmout PEP spolu s naším současným myšlením o detailech souvisejících s přijetím.
Kromě toho, Uvádí se, že změny, které se plánují provést ve třech etapách, které jsou krátkodobé, střednědobé a dlouhodobé. Vzhledem k tomu v první fázi je zakázání GIL ve výchozím nastavení nepraktické kvůli režii související se změnami v garbage collector, systému správy paměti a primitivech pro organizování zámků. Například kvůli použití počítání referencí pro izolaci vláken dochází u jednovláknových skriptů k poklesu výkonu (v sadě testů pyperformance o 10 %). Současně může být nutné deaktivovat GIL ve vědeckých výpočtech, pro které je nedostatek paralelizace závažnějším problémem než lineární rychlost provádění kódu.
Ve druhé fázi se bude v podstatě čekat na potvrzení. a že existuje dostatečná podpora ze strany komunity, takže použití „non-GIL je životaschopné“ a ujistěte se, že je podporováno sestavení bez GIL, ale není výchozí.
V poslední fázi již bude výchozí hodnotou no-GIL a veškeré zbytky GIL budou odstraněny (bez zbytečného narušení zpětné kompatibility).
Je pozorováno, že práce na odklonu od GIL bude provedena velmi pečlivě, aby se chyba neopakovala co se stalo při propagaci Python 3: Sestavení bez GIL bude muset zajistit kompatibilitu se staršími verzemi Pythonu a jakékoli změny kódu třetích stran nutné pro práci na sestaveních bez GIL by měly fungovat i na sestavení GIL.
Neplánuje se přečíslování verzí na Python 4 pro sestavení bez GIL, protože si zachovají kompatibilitu s ABI.
V průběhu celého procesu budeme my (hlavní vývojáři, nejen SC) muset přehodnotit pokrok a navrhované časové osy. Nechceme, aby se z toho stal další desetiletý boj o zpětnou kompatibilitu, a chceme mít možnost zrušit PEP 703 a najít jiné řešení, pokud se zdá, že se stane problematickým, takže musíme pravidelně kontrolovat, zda další práce stojí za to.
Doufáme, že to poskytne určitou jasnost ohledně budoucnosti PEP, protože vypracováváme přesné podrobnosti o přijetí. SC bude pracovat na dokončení přijetí v nadcházejících týdnech.
Před úplným přechodem na non-GIL sestavení plánujeme dosáhnout plné podpory komunity pro tato sestavení a také poskytnout další C API a Python API, abychom umožnili bezpečné multithreading ve stávajícím kódu.
Konečně, jak již bylo zmíněno, očekává se, že přechod do třetí fáze může nastat minimálně za 5 let a pravděpodobné datum pro PEP-0703 je vydání Pythonu 3.13, plánované na podzim příštího roku.
Pokud zájem dozvědět se o tom více, můžete zkontrolovat podrobnosti Na následujícím odkazu.