Встречается на 1% собеседований по Python
Как потоки взаимодействуют с 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
интервью вопросы и ответы