Встречается на собеседованиях • сегодня
Какую проблему решает 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
интервью вопросы и ответы