·6 dk okuma·teknoloji
Python 3.14 ve Serbest İş Parçacıkları: Birlikte Çalışmak Nasıl Değişir?
Python 3.14’te serbest iş parçacığı desteği: derleme, çalışma kipi, uzantılar, ortak veri ve uygulamaya özgü performans soruları.
Yüz belgenin içeriğini işleyen bir program düşünün. Bilgisayarın birden fazla işlemci çekirdeği vardır, fakat programın işini bu çekirdeklere nasıl dağıttığı ayrı bir sorudur. Ekranda dört iş parçacığının bulunması, bunların her koşulda dört bağımsız hesaplama gibi ilerlediğini söylemez. Python'un serbest iş parçacıklı çalışmaya açılan yolu, bu ilişkinin bir bölümünü değiştirir. Asıl ilginçlik yalnız daha hızlı bitirme olasılığı değildir. Daha fazla eşzamanlı işin mümkün olduğu bir düzende, programın hangi veriyi paylaşacağını ve ortak işlemleri nasıl düzenleyeceğini yeniden düşünmek gerekir.
Python 3.14.0, 7 Ekim 2025'te yayımlanmıştır. Resmî sürüm sayfası serbest iş parçacıklı Python'un bu seride resmen desteklendiğini belirtir. 13 Ekim 2026 bilgi kesim tarihiyle bu yazı, söz konusu sürüm duyurusunu ve CPython deposundaki 3.14.0 etiketine sabitlenmiş kullanım belgesini temel alır. Sonradan güncellenen çevrimiçi belgenin bütün yeni ayrıntılarını eski sürümün özellikleri gibi bir araya getirmez. Konu, bir ürünün destek durumuyla bir uygulamanın gerçek çalışma düzeni arasındaki bağlantıdır. [1][2]
Serbestlik hangi olanak için kullanılıyor?
Belge, CPython 3.13 ile küresel yorumlayıcı kilidinin, yani GIL'in devre dışı olduğu ayrı bir derleme biçiminin desteklenmeye başladığını açıklar. Bu biçim, kullanılabilir işlemci çekirdeklerinde iş parçacıklarının paralel çalışmasına olanak verir. Aynı açıklama bütün yazılımların bundan kendiliğinden yararlanmayacağını belirtir. Bir programın işini parçalara ayırması, hangi parçaların birlikte ilerleyebileceğini belirlemesi ve sonuçları toplaması hâlâ programın tasarımıdır. Yorumlayıcı olanağı ile uygulamanın bu olanağı kullanma biçimi farklı işlerdir. [2]
Belge işleme örneğinde yüz dosya gerçekten birbirinden bağımsız değerlendirilebiliyorsa, bu bağımsızlık iş dağıtımını düşünmek için başlangıç olabilir. Ancak sonraki dosyanın hesabı öncekinin sonucuna bağlıysa aynı düzen başka bir anlam taşır. Burada çalışan bir programın hız ölçümü verilmemektedir; bağımlılığın neden donanım çekirdeği sayısından ayrı bir soru olduğunu gösteren tasarım sahnesidir. Dört çalışan oluşturmak, işin içinde bulunan bekleme ve paylaşma ilişkilerini yok etmez.
Destekleyen derleme ile o anda açık olan kip
Bir yorumlayıcının serbest çalışmayı desteklemesi ve çalışan süreçte GIL'in gerçekten kapalı olması ayrı kontrollerdir. Sürüme sabitlenmiş belge, derleme bilgisini incelemek için sürüm çıktısı ve yapılandırma değişkeninden; çalışan süreçteki durumu incelemek için sys._is_gil_enabled() işlevinden söz eder. Bu ayrım, yalnız “Python 3.14 kullanıyorum” demenin çalışma biçimini eksiksiz tanımlamadığını gösterir. Aynı sürüm ailesi içinde derleme ve çalışma seçeneklerini bilmek gerekir. [2]
Belgede serbest iş parçacıklı derlemenin, çalışma sırasında GIL açık olarak da kullanılabildiği belirtilir. PYTHON_GIL ortam değişkeni ve -X gil seçeneği bu denetimle ilişkilidir. Dolayısıyla “destek var” ifadesi, bütün kurulumlarda ve bütün süreçlerde tek bir durum bulunduğu anlamına gelmez. Bir performans denemesini aktarırken yazılım sürümü kadar kullanılan yorumlayıcı biçiminin de kaydedilmesi, sonucun hangi koşula ait olduğunu açıklamaya yardımcı olur.
Bir uzantı çalışma koşulunu değiştirebilir
Python uygulaması yalnız kendi yazdığı işlevlerden oluşmayabilir. C API üzerinden gelen uzantılar da sürecin parçasıdır. Belge, serbest iş parçacığını desteklediği açıkça işaretlenmemiş bir uzantı içe aktarıldığında GIL'in otomatik olarak yeniden etkinleşebileceğini ve uyarı verileceğini anlatır. Böyle bir durumda uygulamanın başlangıçtaki beklentisi ile paketler yüklendikten sonraki çalışma koşulu farklılaşabilir. Bu, bütün uzantıların uyumsuz olduğu iddiası değil, belirli destek bilgisinin önemidir. [2]
Belge işleme sahnesinde bir metin çözümleme paketi eklendiğini düşünelim. Programın ilk kontrolü serbest çalışma olanağını göstermiş olabilir; ama kullanılan uzantının davranışı da değerlendirilmelidir. Bu varsayımsal paket hakkında gerçek uyumluluk iddiası yapılmıyor. Örnek, yalnız yorumlayıcı adının yazılım yığınının bütününü temsil etmediğini gösterir. Tasarım, yorumlayıcı, paketler ve çalışma seçenekleri birlikte araştırılan düzenin parçalarıdır.
Dahili kilitler uygulama kuralını yazmaz
CPython belgesi dict, list ve set gibi yerleşik türlerin eşzamanlı değişikliklere karşı dahili kilitler kullandığını anlatır. Ancak bunu belirli uygulamanın açıklaması olarak tutar; bütün şimdiki veya gelecek davranışların sınırsız garantisi diye sunmaz. Uygun olduğunda threading.Lock veya başka eşzamanlama araçlarının kullanılması önerilir. Böylece “GIL yok” ile “artık hiçbir kilit yok” cümlelerinin aynı olmadığı açıkça görülür. Daha geniş paralellik, düzenleme ihtiyacının bittiğini değil, farklı düzeylerde ele alındığını gösterir. [2]
Ortak bir sonuç listesi üzerinde çalışan iş parçacıkları, yalnız listeye ekleme yapmıyor olabilir. Önce belirli belgenin işlenip işlenmediğini kontrol edip, sonra sonucu eklemek isteyen bir uygulama düşünelim. Kontrol ile eklemeyi tek bir uygulama kuralı olarak düzenlemek, veri yapısının iç korumasını bilmekten farklıdır. Bu örnek belirli bir sürüm için ayrıntılı atomiklik garantisi üretmez. Nesne üzerindeki bir işlem ile birkaç adımı bir araya getiren iş mantığını ayırır.
Aynı yineleyiciyi paylaşma sorunu
Sürüme sabitlenmiş belge, aynı yineleyici nesnesini birden fazla iş parçacığında paylaşmanın genel olarak güvenli olmadığını; eksik veya yinelenen öğelerle karşılaşılabileceğini belirtir. Belge listesine dönelim: Dört çalışan aynı ilerleme nesnesinden sıradaki dosyayı almaya çalışıyorsa, görev paylaşımı yalnız dört çalışan oluşturmakla çözülmüş değildir. Her dosyanın hangi çalışana ait olduğunun anlaşılır bir düzenle belirlenmesi gerekir. Veri kaynağını paylaşmakla iş yükünü doğru bölüştürmek birbirinin otomatik karşılığı değildir. [2]
Bu nedenle serbest çalışma hakkında düşünürken “Kaç iş parçacığı?” sorusunun yanına “Hangi nesneler ortak?” sorusu gelir. Bağımsız dosyalardaki hesaplar ile paylaşılan görev dağıtıcısı aynı şey değildir. Bir programın farklı bölümleri farklı eşzamanlama gereksinimleri taşıyabilir. Araştırılan hız artışı, doğru görevin doğru sayıda işlenmesiyle birlikte değerlendirilmelidir. Sonucun daha erken gelmesi, sonucun eksiksiz ve tutarlı olmasından ayrı bir başarı olarak kalamaz.
Tek iş parçacığının maliyeti de hesaba katılır
Belge serbest derlemenin Python kodu yürütürken ek maliyet taşıyabileceğini anlatır. Etkiyi bütün uygulamalar için aynı oranla vermek yerine, bu yazıda nitel ayrım korunur: Paralel çalışma olanağı ile tek iş parçacıklı bölümün maliyeti birlikte değerlendirilir. Sürüm etiketindeki metinde geçmiş 3.13 ölçümleri ve 3.14 için beklentiler de bulunduğundan, bunlar 3.14.0'ın gerçekleşmiş performans sonucu olarak aktarılmaz. [2]
Gerçek bir değerlendirmede seçilen iş yükü önemlidir. Belge hazırlama, hesaplama ve sonuç toplama gibi farklı aşamalar aynı programın içinde bulunabilir. Bir aşamanın hızlanması, bütün programın aynı oranda hızlandığı anlamına gelmez. Bu, burada yapılmış bir karşılaştırma deneyinin sonucu değil, ölçüm tasarımında ayrılması gereken işlerdir. Serbest çalışma, otomatik bir verimlilik sayısı yerine uygulamaya özgü bir araştırma olanağı olarak daha doğru anlaşılır.
Kanıta dayalı sonuç: Destek, tasarımın başlangıcı
Resmî duyuru, Python 3.14 serisinin serbest iş parçacıklı çalışmayı desteklediğini doğrular. Sürüme sabitlenmiş belge ise derleme desteği, çalışma durumunun kontrolü, uzantıların etkisi ve paylaşılan nesnelerin düzenlenmesi arasındaki farkları açıklar. Bu yazı paketleri sınamış veya yeni bir hız karşılaştırması yürütmüş değildir. Özellikle kilitlerin kaldırılmasını bütün eşzamanlama sorumluluğunun ortadan kalkması gibi anlatmaz.
Yüz belgelik başlangıç sahnesi artık daha iyi sorulara ayrılır: İşler bağımsız mı, yorumlayıcı hangi kipte, kullanılan uzantılar ne yapıyor ve sonuç paylaşımı nasıl düzenleniyor? Yeni destek bu soruları gereksizleştirmez. Onları daha fazla paralellik olanağı içinde düşünmeye davet eder. Teknolojik kazanım, yalnız çalışan sayısını büyütmek değil, birlikte çalışmanın koşullarını açık hale getirmektir.
Kaynaklar
- Python Software Foundation, Python 3.14.0 sürüm sayfası, 7 Ekim 2025. Tarih ve serbest iş parçacıklı desteğin resmî durumu için dar kapsamlı doğrulama; sonradan çıkan yama sürümleri hakkında iddia yoktur.
- CPython katkıcıları, “Python support for free threading”, v3.14.0 belge kaynağı. 13 Ekim 2026 kesiminden sonraki hareketli belge yerine sürüm etiketi kullanılmıştır. Eski sürüm sonuçları ile gelecek beklentileri güncel ölçüm diye sunulmamıştır.
- Python v3.14.0 lisansı. Belge, Python Software Foundation License Version 2 kapsamındadır. Açıklamalar özgün Türkçe anlatı ve varsayımsal örneklerle yeniden düzenlenmiştir; kod veya görsel kopyalanmamıştır. Copyright (c) 2001 Python Software Foundation; All Rights Reserved. Korunan lisans ve değişiklik notu.