Встречается на собеседованиях • сегодня
Как потоки взаимодействуют с GIL в Python
В Python GIL (Global Interpreter Lock) — это механизм, который позволяет выполняться только одному потоку за раз, даже в многопоточных приложениях. Это ограничение связано с управлением памятью в CPython.
Как это работает:
- GIL предотвращает параллельное выполнение байт-кода несколькими потоками.
- Потоки по-прежнему переключаются, но только один активен в любой момент.
- Это не мешает потокам работать с I/O-операциями (сеть, файлы), так как GIL освобождается во время ожидания.
Пример:
python
import threading
def count_up():
for i in range(5):
print("Up:", i)
def count_down():
for i in range(5, 0, -1):
print("Down:", i)
t1 = threading.Thread(target=count_up)
t2 = threading.Thread(target=count_down)
t1.start()
t2.start()
t1.join()
t2.join()Вывод будет чередоваться, но не параллельно, так как GIL переключает потоки.
Когда GIL не мешает:
- В I/O-bound задачах (сеть, файлы).
- В мультипроцессинге (процессы имеют свои GIL).
- В сторонних библиотеках (NumPy, C-расширения), которые отпускают GIL.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы