Этот вопрос проверяет, понимаете ли вы, почему потоки “перемешиваются” в выполнении и какие события заставляют CPython отдавать GIL другому потоку.
Короткий ответ
В CPython потоки переключаются, потому что один поток периодически освобождает GIL, и другой может его захватить. Это происходит по таймеру (интервал переключения) и в точках, где поток уходит ждать I/O. То есть операционная система планирует потоки, но выполнять Python-байткод реально может только тот, кто держит GIL. Поэтому вы видите “конкуренцию” потоков, но не настоящий параллелизм байткода.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.