- Free-threaded CPython, aynı yorumlayıcı içinde birden fazla iş parçacığının paralel çalışmasını mümkün kılan büyük bir değişim
- CPython 3.13'te deneysel bir özellik olarak sunuluyor
- PEP 703 sayesinde GIL devre dışı bırakılmış durumda çalıştırılabiliyor
- Performans artışı, özellikle çok iş parçacıklı performans için önemli
- Birden fazla CPU çekirdeğinin etkili şekilde kullanılmasını sağlıyor
Heyecan verici ama sorunlar ne?
- CPython'ın kendisinde free-threading uygulaması büyük bir çaba gerektiriyor
- İki ana sorun var: iş parçacığı güvenliği ve ABI uyumluluğu
- İş parçacığı güvenliği: Saf Python kodu değişiklik olmadan çalışıyor, ancak başka dillerde yazılmış kodlar veya CPython C API kullanan kodlar için aynı şey geçerli olmayabilir
- ABI uyumluluğu: free-threaded yorumlayıcı farklı bir ABI'ye sahip olduğundan, uzantı modülü içeren her paket için ek wheel derlenmesi gerekiyor
- İş parçacığı güvenliği sorunlarını anlamak, iyileştirmek ve test etmek zor
- Örnekler: numpy#26690, pywavelets#758 gibi yerlerde görülen aralıklı hatalar
Bundan sonraki plan ve ekibin çalışmaları
- free-threaded CPython'ın varsayılan hale gelmesi birkaç yıl alacak
- Python 3.13 ile birçok projenin uyumluluk üzerinde çalışması ve
cp313t wheel'lerini PyPI'da yayımlaması umuluyor
- Ekip birkaç aydır PyData yığınının alt katmanlarından başlayarak çalışıyor
- Her paket için benzer bir yaklaşım izleniyor:
- İlk CI işi eklenir
- İş parçacığı güvenliği ile paylaşılan/genel durum sorunları düzeltilir
- Wheel derleme CI işlerine free-threaded desteği eklenir
- Yerelde stres testi yapılır ve CI işleri izlenir
- Uzantı modülleri, GIL olmadan çalışabilecek şekilde işaretlenir
- Sonraki pakete geçilir
GN⁺ özeti
- Free-threaded CPython, çok iş parçacıklı performansı büyük ölçüde artırabilecek önemli bir değişim
- İş parçacığı güvenliği ve ABI uyumluluğu sorunlarını çözmek başlıca görevler
- Python 3.13 ile birçok projenin uyumluluk üzerinde çalışması ve deneyler yapabilmesi umuluyor
- PyTorch gibi büyük paketlerin ve çok sayıda küçük paketin bu değişimi benimsemesi gerekiyor
- İlgili projeler arasında PyO3 ve PyTorch bulunuyor
1 yorum
Hacker News görüşleri
Python'da GIL'in kaldırılmasıyla birçok kuruluş ve proje için neredeyse ek çaba gerektirmeden performansı büyük ölçüde artırma fırsatı doğuyor
macOS'ta GIL'siz Python'ı kurup çalıştırma deneyimi paylaşılıyor
Python'un kolay yazılabilirliğini ve mantığını seven bir kullanıcı, GIL'siz yaklaşımın mevcut Python yazım tarzına benzer kalmasını umuyor
Python 3'ün ilerleyişi özetleniyor
2007 civarında paralel işlemenin zorunlu hale geldiği hatırlatılıyor
PEP703'te GIL kaldırıldıktan sonra liste üzerindeki
appendişleminin thread safety'yi nasıl koruduğu açıklanıyorGIL'in kaldırılmasının ML eğitimi ve çıkarımın doğasını nasıl değiştireceği merakla bekleniyor
Gerçek multithreading deneyimi olmayan programcıların yeni ve ince hatalar ortaya çıkarabileceği konusunda endişe duyuluyor
Tek thread performansındaki düşüşün ciddi olup olmadığı soruluyor
Async ile nasıl çalışacağına dair merak dile getiriliyor
gatheryapılırken JIT'in mümkün olup olmayacağı sorgulanıyor