GIL
- Python kursu
- Uzman
- Ders 33/47
- 5 dk
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
# count fonksiyonu yaz
# parçacık oluştur ve çalıştırÖrnek çözüm
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
GIL: Global ____ Lock
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.