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

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

GIL (Global Interpreter Lock) в Python отпускается в следующих случаях:

  1. I/O операции – чтение/запись файлов, сетевые запросы (socket, HTTP и т.д.).
  2. Системные вызовы – например, time.sleep().
  3. Вызовы C-расширений – если расширение явно отпускает GIL (например, NumPy, Cython с nogil).
  4. Операции, выполняемые в другом потоке – например, в threading.Thread.

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

python
import time
import threading

def worker():
    print("GIL отпущен на время sleep")
    time.sleep(1)  # GIL отпущен
    print("GIL снова захвачен")

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

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

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

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

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

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