Sobes.tech
Junior — Middle

Czym jest GIL w Pythonie?

sobes.tech AI

Odpowiedź od AI

GIL (Global Interpreter Lock) — to mechanizm w CPython (domyślnej implementacji Pythona), który zapewnia, że w danym momencie tylko jeden wątek wykonuje bytecode Pythona.

Oznacza to, że nawet jeśli masz kilka wątków, nie mogą one jednocześnie wykonywać kodu Pythona, co ogranicza równoległość w programach wielowątkowych.

GIL upraszcza zarządzanie pamięcią i zapobiega problemom z dostępem współbieżnym do obiektów, ale obniża wydajność obliczeń wielowątkowych, szczególnie na procesorach wielordzeniowych.

Aby obejść ograniczenia GIL, często używa się:

  • Wieloprocesowości (moduł multiprocessing)
  • Rozszerzeń w C, które zwalniają GIL podczas ciężkich obliczeń
  • Innych implementacji Pythona bez GIL (np. Jython, IronPython)

Przykład:

import threading

def worker():
    print("Praca w wątku")

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

Chociaż wątki są uruchamiane, GIL gwarantuje, że bytecode jest wykonywany sekwencyjnie.