Junior — Middle
Čo je GIL v Pythone?
sobes.tech AI
Odpoveď od AI
GIL (Global Interpreter Lock) je mechanizmus v CPython (štandardnej implementácii Pythonu), ktorý zabezpečuje, že v každom momente vykonáva iba jedno vlákno Python bytecode.
To znamená, že aj keď máte viac vlákien, nemôžu súčasne vykonávať Python kód, čo obmedzuje paralelizmus v viacvláknových programoch.
GIL zjednodušuje správu pamäte a zabraňuje problémom s konkurenčnym prístupom k objektom, ale znižuje efektivitu viacvláknových výpočtov, najmä na viacjadrových procesoroch.
Na prekonanie obmedzení GIL sa často používajú:
- Viacprocesové spracovanie (modul multiprocessing)
- Použitie rozšírení v C, ktoré uvoľňujú GIL počas náročných výpočtov
- Iné implementácie Pythonu bez GIL (napríklad Jython, IronPython)
Príklad:
import threading
def worker():
print("Práca vo vlákne")
thread = threading.Thread(target=worker)
thread.start()
thread.join()
Hoci sa vlákna spustia, GIL garantuje, že bytecode sa vykonáva sekvenčne.