Sobes.tech
Junior — Middle

Co je GIL v Pythonu?

sobes.tech AI

Odpověď od AI

GIL (Global Interpreter Lock) je mechanismus v CPythonu (výchozí implementace Pythonu), který zajišťuje, že v daném okamžiku vykonává pouze jedno vlákno Python bytecode.

To znamená, že i když máte více vláken, nemohou současně spouštět Python kód, což omezuje paralelismus ve vícevláknových programech.

GIL zjednodušuje správu paměti a zabraňuje problémům s konkurenčním přístupem k objektům, ale snižuje efektivitu vícevláknových výpočtů, zejména na vícejádrových procesorech.

Pro překonání omezení GIL se často používají:

  • Víceprocesní přístupy (modul multiprocessing)
  • Použití rozšíření v C, která uvolňují GIL během náročných výpočtů
  • Další implementace Pythonu bez GIL (například Jython, IronPython)

Příklad:

import threading

def worker():
    print("Práce ve vlákně")

thread = threading.Thread(target=worker)
thread.start()
thread.join()

Ačkoliv jsou vlákna spuštěna, GIL zaručuje, že bytecode se vykonává sekvenčně.