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

Почему GIL не блокирует I/O bound задачи

GIL (Global Interpreter Lock) в Python блокирует выполнение только CPU-bound задач, так как он защищает доступ к внутренним структурам интерпретатора. Однако при выполнении I/O-bound операций (чтение/запись файлов, сетевые запросы и т.д.) поток освобождает GIL, позволяя другим потокам работать параллельно. Это происходит потому, что I/O операции выполняются на уровне ОС и не требуют активного участия интерпретатора Python.

Пример:

python
import threading
import time

def io_task():
    print("Начало I/O операции")
    time.sleep(2)  # Имитация I/O операции
    print("Завершение I/O операции")

threads = []
for _ in range(3):
    t = threading.Thread(target=io_task)
    threads.append(t)
    t.start()

for t in threads:
    t.join()

Здесь потоки выполняют time.sleep() (аналог I/O), освобождая GIL, что позволяет им работать "параллельно".

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

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

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

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