Встречается на 2% собеседований по Python
Какую проблему решает GIL
GIL (Global Interpreter Lock) — это механизм в CPython, который предотвращает одновременное выполнение байткода несколькими потоками. Он решает проблему конкурентного доступа к управлению памятью, упрощая реализацию CPython и делая его более безопасным.
Основные моменты:
- Безопасность памяти: GIL защищает структуры данных интерпретатора от гонки (race conditions).
- Упрощение кода: Избегает сложной синхронизации в низкоуровневых операциях (например, подсчет ссылок).
Недостатки:
- Многопоточные CPU-задачи не ускоряются (потоки выполняются поочередно).
Обходные пути:
- Мультипроцессинг: Запуск нескольких процессов (
multiprocessing). - Асинхронность: Использование
asyncioдля I/O-bound задач.
python
import threading
def count():
n = 0
for _ in range(10_000_000):
n += 1
# GIL делает это медленнее, чем последовательный запуск
t1 = threading.Thread(target=count)
t2 = threading.Thread(target=count)
t1.start(); t2.start()
t1.join(); t2.join()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы