Sobes.tech
Back to questions
Junior — Middle
72

Можете объяснить, что такое GIL и как оно влияет на работу потоков в Python?

Companies where asked
WildberriesWildberries
МТСМТС
Soft Media Group
Код Открытия
ООО КМВ Тур
Баланс-ПлатформаБаланс-Платформа
Норси-Транс

Answer from AI

sobes.tech AI

GIL (Global Interpreter Lock) — это глобальная блокировка интерпретатора Python, которая позволяет только одному потоку выполнять байт-код Python в любой момент времени. Это означает, что даже если у вас несколько потоков, они не смогут одновременно выполнять Python-код параллельно в одном процессе.

Влияние GIL:

  • Потоки в Python эффективны для операций ввода-вывода (например, сетевые запросы), так как во время ожидания GIL освобождается.
  • Для CPU-интенсивных задач многопоточность не даёт прироста производительности из-за GIL.
  • Для параллельного выполнения CPU-задач лучше использовать многопроцессность (модуль multiprocessing) или альтернативные реализации Python без GIL (например, Jython, IronPython).

Пример:

import threading

def cpu_bound():
    count = 0
    for i in range(10**7):
        count += i

threads = [threading.Thread(target=cpu_bound) for _ in range(4)]
for t in threads:
    t.start()
for t in threads:
    t.join()

Несмотря на 4 потока, из-за GIL выполнение будет последовательным, и ускорения не будет.