Python 3.13: Sonunda küresel yorumlayıcı kilitlemesi olmadan daha verimli çoklu iş parçacığı kullanımı

Saberie

Active member


  1. Python 3.13: Sonunda küresel yorumlayıcı kilitlemesi olmadan daha verimli çoklu iş parçacığı kullanımı

Uzun tartışma ve hazırlıkların ardından Python programlama dilinde Global Interpreter Lock'u (GIL) devre dışı bırakmanıza olanak tanıyan bir değişiklik yapıldı. Bu, çok iş parçacıklı uygulamalar için bir fren bloğunu kaldırmak için kullanılabilir.

Duyuru



Yeni bayrakların uygulanması PYTHON_GIL VE -X gil=0 Şu anda Python 3.13 için Alpha 5'te olan CPython projesinin ana şubesine çekme isteği yoluyla eklendi.

Verimlilik pahasına iplik güvenliği


Python, iş parçacığı güvenliğini sağlamak ve yarış koşullarını önlemek için GIL'e güveniyor. İkincisi, paralel olarak çalışan bir programın birden fazla işlemi, değiştirmek için aynı verilere eriştiğinde meydana gelir; bu, sürece bağlı olarak farklı sonuçlara yol açabilir.

Global tercüman kilitleme aynı anda yalnızca bir iş parçacığının etkin olmasını sağlar. Bu, yarış koşullarını engellerken aynı zamanda Python'un çok işlemcili sistemlerin veya çok çekirdekli işlemcilerin potansiyelini verimli bir şekilde kullanamadığı anlamına da geliyor.

İki KEP ve bir anket


GIL'in sona erdirilmesine ilişkin tartışmalar uzun süredir devam ediyor. Python 3.12, bağımsız bloklara sahip alt yorumlayıcılar oluşturmak için Python Geliştirme Teklifi (PEP) 684 “Yorumlayıcı Başına Bir GIL” uygulanmasına olanak tanır.

Ocak 2023'te, PyTorch'un geliştirilmesinde diğer şeylerin yanı sıra yer alan Metas Facebook AI Research'ten Sam Gross, sonunda Python Geliştirme Teklifini (PEP) 703 “CPython'da küresel tercüman kilitlemeyi isteğe bağlı hale getirin” i başlattı.

2023 yazında Python Yönlendirme Konseyi, çekirdek geliştirme ekibinin çoğunluğunun daha iyi bir çoklu iş parçacıklı varyant isteyip istemediğini ve bu çabaya katlanmaya istekli olup olmadığını ve geçişte PEP 703 ile ilgili sorunların beklenip beklenmediğini öğrenmek için bir anket gerçekleştirdi. Anket sonuçları açık bir anlaşmayı gösteriyor.

İsteğe bağlı muafiyet


Global Interpreter Lock işaretlerini tanıtan CPython projesine yönelik bir çekme isteği artık kabul edildi: PYTHON_GIL=0 VEYA -X gil=0 çalışma zamanında GIL'yi devre dışı bırakın.

Bunun ön koşulu Python'un kendisinin bayrağa sahip olmasıdır. Py_GIL_DISABLED “GIL'yi devre dışı bırakmak için bir mekanizma ekleme” sayısında okuduğumuz gibi oluşturuldu.

Python 3.13'te Global Yorumlayıcı Kilidi varsayılan olarak hâlâ etkin olacaktır ve bayrak kullanılarak manuel olarak devre dışı bırakılabilir. Bunun bir nedeni, geliştirme ekibinin geçiş sırasında bazı hatalar beklemesidir. Sorunlar çözüldükten sonra Python'un varsayılan olarak GIL olmadan çalışması gerekir.


(kendim)



Haberin Sonu
 
Üst