Python'da zaten GIL'i kaldırma ve daha iyi performans elde etme teklifini tartışıyorlar

Python logosu

Python, üst düzey bir programlama dilidir.

Geçenlerde bir haber çıktı ki, Python Projesi Yönlendirme Komitesi, projeyi onaylamak istediğini açıkladı. Python dil uzantısı önerisi «PEP-0703"CPython'da global yorumlayıcı kilidini isteğe bağlı hale getirir ve temel olarak Global Yorumlayıcı Kilidi (GIL) olmadan CPython derleme modunun gömülmesini tanımlar.

BEP-0703 varsayılan olarak GIL kullanımını durdurmayı tanımlar, ancak devre dışı bırakmak için “–sin-gil” oluşturma seçeneğini ekleyin. Nasılsınl Yeni modun paralelleştirme sorununu çözmesi bekleniyor küresel kilidin farklı iş parçacığından paylaşılan nesnelere paralel erişime izin vermemesi nedeniyle çok çekirdekli sistemlerdeki işlemlerin.

Uzun vadede (5 yıl sonra), kabuğun varsayılan olarak yalnızca küresel kilitlenmeme modunda değiştirilmesi planlanmaktadır., aynı zamanda GIL ile derleme desteğini bırakıyor.

GIL olmaması önerisiyle ilgili ankete yanıt verdiğiniz için hepinize teşekkür ederiz. Genel düşüncenin hem genel fikir hem de özel olarak PEP 703 için olumlu olduğu açıktır. Yönetim Kurulu da her ikisine de büyük ölçüde olumlu bakıyor. PEP 703'ü kabul etmek niyetindeyiz, ancak kabulün ayrıntıları üzerinde hâlâ çalışıyoruz.

Geçmişte birkaç kez yaptığımız gibi, PEP'i kabul etme niyetimizi ve kabulle ilgili ayrıntılar hakkındaki mevcut düşüncelerimizi iletmek istiyoruz.

Bunun yanı sıra, Üç aşamada gerçekleştirilmesi planlanan değişikliklerin, kısa, orta ve uzun vadelidir. Verilen ilk aşamada, GIL'i varsayılan olarak devre dışı bırakmak pratik değildir çöp toplayıcı, bellek yönetim sistemi ve kilitleri düzenlemek için ilkel öğelerdeki değişikliklerle ilişkili ek yük nedeniyle. Örneğin, iş parçacığı izolasyonu için referans sayımının kullanılması nedeniyle, tek iş parçacıklı betikler için bir performans düşüşü olur (pyperformance test paketinde %10 oranında). Aynı zamanda, paralelleştirme eksikliğinin kod yürütmenin doğrusal hızından daha ciddi bir sorun olduğu bilimsel hesaplamada GIL'i devre dışı bırakmak gerekebilir.

İkinci aşamada temel olarak onay beklenecektir. ve topluluktan yeterli desteğin olması, böylece "GIL olmayan geçerli" kullanımı ve GIL'siz derlemenin desteklendiğinden ancak varsayılan olmadığından emin olun.

Son aşamada, no-GIL varsayılan değer olacaktır. ve GIL'in tüm kalıntıları kaldırılacaktır (geriye dönük uyumluluğu gereksiz yere bozmadan).

Gözlenmektedir ki GIL'den uzaklaşmak için yapılan çalışmalar, hatayı tekrarlamamak için çok dikkatli bir şekilde yapılacaktır. Promosyon yaparken ne oldu? Python 3: GIL dışı bir yapının, Python'un eski sürümleriyle uyumluluğu sağlaması gerekir ve GIL dışı yapılarda çalışmak için gereken herhangi bir üçüncü taraf kod değişikliği, GIL yapılarında da çalışmalıdır.

ABI uyumluluğunu koruyacakları için, GIL dışı yapılar için sürümleri Python 4 olarak yeniden numaralandırma planı yoktur.

Süreç boyunca, biz (yalnızca SC'nin değil, çekirdek geliştiricilerin) ilerlemeyi ve önerilen zaman çizelgelerini yeniden değerlendirmemiz gerekecek. Bunun başka bir on yıllık geriye dönük uyumluluk mücadelesine dönüşmesini istemiyoruz ve PEP 703'ü iptal edebilmek ve sorunlu görünüyorsa başka bir çözüm bulabilmek istiyoruz, bu nedenle devam eden çalışmanın buna değer olup olmadığını düzenli olarak kontrol etmemiz gerekiyor.

Kabulün kesin ayrıntılarını üzerinde çalışırken, bunun PEP'in geleceği hakkında biraz netlik sağlayacağını umuyoruz. SC, önümüzdeki haftalarda kabulü sonuçlandırmak için çalışacak.

GIL dışı yapılara tam geçişten önce, bu yapılar için tam topluluk desteği sağlamayı ve ayrıca mevcut kodda güvenli çoklu kullanım sağlamak için ek C API'leri ve Python API'leri sağlamayı planlıyoruz.

Son olarak, daha önce de belirtildiği gibi, üçüncü aşamaya geçişin en az 5 yıl içinde gerçekleşmesi bekleniyor ve PEP-0703 için olası tarih, önümüzdeki sonbaharda yapılması planlanan Python 3.13'ün piyasaya sürülmesidir.

Şekerleme onun hakkında daha fazla bilgi edinmekle ilgileniyorayrıntıları kontrol edebilirsiniz Aşağıdaki bağlantıda.


Tercih edilen kaynak olarak ekle