Встречается на собеседованиях • сегодня

Кто переключает потоки в GIL

GIL (Global Interpreter Lock) в CPython управляется самим интерпретатором. Переключение потоков происходит автоматически:

  1. По таймеру: примерно каждые 5 мс (значение sys.getswitchinterval())
  2. При блокирующих операциях: I/O (файлы, сетевые запросы), time.sleep(), вызовы C-функций, освобождающие GIL

Пример:

python
import threading

def worker():
    print("Поток начал работу")
    # Здесь GIL может переключиться на другой поток
    [x*x for x in range(10_000_000)]  # CPU-bound операция
    print("Поток завершил работу")

threads = [threading.Thread(target=worker) for _ in range(2)]
for t in threads:
    t.start()
for t in threads:
    t.join()

Важно: GIL не позволяет выполняться Python-коду нескольких потоков одновременно, даже на многоядерных CPU. Для параллелизма лучше использовать multiprocessing или асинхронные подходы (asyncio).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы