Какие ограничения накладывает GIL
Python
Senior
Без компании
Какие ограничения накладывает GIL
Ответы
GIL (Global Interpreter Lock) в CPython ограничивает параллельное выполнение Python-кода в нескольких потоках. Основные ограничения:
- **Одновременное выполнение только одного потока** - GIL позволяет выполнять только один поток Python за раз, даже на многоядерных процессорах.
- **Неэффективность CPU-интенсивных задач** - для CPU-зависимых операций многопоточность не даёт прироста производительности.
- **Проблемы с долгими операциями** - если один поток выполняет долгую операцию (например, вычисления), другие потоки блокируются.
Пример:
```
import threading
def count():
n = 0
while n < 100000000:
n += 1
# Два потока выполняются последовательно из-за GIL
t1 = threading.Thread(target=count)
t2 = threading.Thread(target=count)
t1.start(); t2.start()
t1.join(); t2.join()
```
Обходные пути:
- Использование процессов вместо потоков (модуль `multiprocessing`)
- Вынос CPU-интенсивных задач в C-расширения
- Использование async/await для I/O-bound задач
- Альтернативные реализации Python (Jython, IronPython) без GIL