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

Когда GIL отдаёт управление

GIL (Global Interpreter Lock) в CPython освобождается в нескольких случаях:

  1. I/O операции – при выполнении операций ввода/вывода (чтение файлов, сетевые запросы и т.д.)
  2. Системные вызовы – когда поток выполняет системный вызов (например, time.sleep())
  3. Число выполненных инструкций – после выполнения определённого количества байт-код инструкций (по умолчанию 100, можно изменить через sys.setswitchinterval())

Пример с time.sleep():

python
import threading
import time

def worker():
    print("Thread started")
    time.sleep(1)  # Здесь GIL освобождается
    print("Thread finished")

t = threading.Thread(target=worker)
t.start()
t.join()

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

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

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

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

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