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ě.