Sobes.tech
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.