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

При каких условиях поток отпускает GIL в Python

GIL (Global Interpreter Lock) отпускается в нескольких случаях, что позволяет другим потокам выполняться:

  1. При выполнении I/O операций – чтение/запись файлов, сетевые запросы и т.д.
    python
    with open('file.txt', 'r') as f:  # GIL отпускается при чтении файла
        data = f.read()
  1. При вызове C-расширений – если расширение явно отпускает GIL (например, NumPy или cryptography).

  2. Во время sleep – при вызове time.sleep() поток освобождает GIL.

    python
    import time
    time.sleep(1)  # GIL отпускается
  3. При операциях с блокировками – например, при использовании threading.Lock.

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

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

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

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

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