Чем отличается конкурентность от параллелизма

Ответ

Это фундаментальные концепции в многозадачных системах, которые часто путают. Ключевое различие заключается в том, как выполняются задачи.

Конкурентность (Concurrency) — это способность системы обрабатывать несколько задач, управляя их выполнением в перекрывающиеся промежутки времени. Задачи могут выполняться на одном ядре CPU, быстро переключаясь между собой, что создает иллюзию одновременности.

  • Суть: Управление множеством задач одновременно.
  • Пример: Веб-сервер, который обрабатывает тысячи клиентских подключений. Пока одна задача ждет ответа от базы данных (I/O-bound), процессор переключается на другую.

Параллелизм (Parallelism) — это фактическое одновременное выполнение нескольких задач или частей одной задачи. Это требует наличия нескольких физических ядер CPU.

  • Суть: Выполнение множества задач одновременно.
  • Пример: Рендеринг видео, где разные кадры обрабатываются на разных ядрах CPU для ускорения процесса (CPU-bound).

Ключевые отличия

Аспект Конкурентность Параллелизм
Исполнение Иллюзия одновременности Реальная одновременность
Требования Достаточно одного ядра CPU Требуется несколько ядер CPU
Цель Эффективное использование ресурсов при ожидании Ускорение вычислений

В Python из-за Global Interpreter Lock (GIL) потоки (threading) обеспечивают конкурентность, но не истинный параллелизм для CPU-bound задач. Для достижения параллелизма используется модуль multiprocessing, который запускает отдельные процессы с собственными интерпретаторами Python.