CodeBlanks Logo Icon CodeBlanks

GIL

GIL (Global Interpreter Lock) kavramını öğrenirsin.

GIL nedir?

GIL (Global Interpreter Lock), CPython'un aynı anda yalnızca bir parçacığın Python bytecodesu çalıştırmasını sağlayan bir kilittir. Bu, threading'in CPU yoğun işleri hızlandırmadığı anlamına gelir.

I/O yoğun işlerde (ağ, dosya) GIL serbest bırakılır; bu yüzden threading bu işlerde hâlâ yararlıdır. Ama saf hesaplama işlerinde parçacıklar sırayla çalışır; paralellik yoktur. CPU yoğun işi paralelleştirmek için multiprocessing kullanılır; her süreç kendi GIL'ine sahiptir.

GIL'in etkisi

GIL, I/O yoğun işlerde sorun yaratmaz. Bir parçacık time.sleep() veya ağ isteği yaparken GIL'i bırakır; diğer parçacıklar çalışabilir.

Ama CPU yoğun bir döngü (örneğin for i in range(1000000): pass) GIL'i sürekli tutar. Bu sırada diğer parçacıklar bekler. Bu yüzden iki CPU yoğun parçacık tek parçacık kadar hızlı çalışır; paralellik kazanmaz. Eğer gerçek paralel CPU gücü istiyorsan multiprocessing tek seçenektir.

Uygulama GIL altında CPU yoğun iş

from threading import Thread ile içe aktar. count fonksiyonu tanımla; for i in range(1000): döngüsü ile total değişkenini artır ve print("bitti") yap. Thread(target=count) ile parçacık oluştur, .start() ve .join() çağır.

Başlangıç kodu

main.py
# count fonksiyonu yaz
# parçacık oluştur ve çalıştır

Örnek çözüm

main.py
from threading import Thread

def count():
    total = 0
    for i in range(1000):
        total += 1
    print("bitti")

t = Thread(target=count)
t.start()
t.join()

Beklenen çıktı

bitti

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 GIL açılımını tamamla

Soru
GIL: Global ____ Lock
Cevap
GIL: Global Interpreter Lock

Açıklama: GIL = Global Interpreter Lock.

2 GIL kavramlarını eşleştir

Kavram Anlamı
GIL Global Interpreter Lock
CPU yoğun Paralellik yok
I/O yoğun GIL bırakılır
multiprocessing Kendi GIL'i

3 CPU yoğun işi paralelleştirmek için ne kullanılır?

  • threading
  • Lock
  • multiprocessing Doğru cevap
  • asyncio

Açıklama: multiprocessing her sürece ayrı GIL verir; CPU işi paralelleşir.

Uzman bölümündeki tüm dersler