Параллелизм и конкурентность
Что такое параллелизм и конкурентность?
подробнее
Параллелизм - это реальное одновременное выполнение задач на разных ядрах процессора.
Главная цель параллелизма - ускорить вычисления. Большая и сложная задача разбивается на более мелкие, независимые подзадачи, которые распределяются между доступными ядрами процессора. Каждое ядро решает свою часть задачи, и в итоге общее время выполнения значительно сокращается.
Реализовано в модулеmultiprocessing.Конкурентность - Это иллюзия одновременности. Процессор быстро переключается между задачами. В каждый момент времени выполняется только одна задача, но из-за скорости кажется, что все сразу.
Конкурентность особенно полезна, когда задачи часто ожидают внешних событий (например, ответа от сервера или чтения файла). Пока одна задача ждёт, система может переключиться на другую и выполнять полезную работу.
Реализовано в модулях:threading,asyncio.
GIL в Python
подробнее
В стандартном Python (CPython) есть GIL (Global Interpreter Lock) — «замок», который разрешает только одному потоку выполнять код в один момент времени. Из-за GIL: Обычные потоки (threading) в Python дают конкурентность, но не дают параллелизма для вычислений (CPU-bound задач). Решение: Для реального параллелизма нужно использовать multiprocessing, так как у каждого процесса свой интерпретатор и свой GIL.