Вопрос проверяет понимание ограничений многопоточности в Python и влияния GIL.
CPU-интенсивные задачи не выигрывают от потоков в Python. Из-за GIL одновременно исполняется только один поток байткода. В таких задачах потоки добавляют накладные расходы, но не ускоряют выполнение. Для них лучше использовать multiprocessing.
Не все задачи в Python подходят для многопоточности.
В CPython существует GIL (Global Interpreter Lock), который:
разрешает выполнение байткода только одному потоку
упрощает управление памятью
ограничивает параллелизм на CPU
Потоки неэффективны для:
вычислений
обработки больших массивов данных
криптографии
сжатия и кодирования
Пример:
# сложные вычисления в потоках
# CPU будет загружен, но ускорения не будет
Использование потоков в таких задачах:
увеличивает переключения контекста
создаёт накладные расходы
усложняет код
В итоге приложение может работать даже медленнее.
Для CPU-bound задач применяют:
multiprocessing
нативные расширения на C
библиотеки, освобождающие GIL
Потоки в Python подходят для I/O-задач, но для вычислений они неэффективны из-за GIL и не дают реального параллелизма.