Конкурентность в программировании — это способность системы обрабатывать множество задач (или потоков выполнения) таким способом, что они кажутся выполняющимися одновременно. Это достигается за счет переключения между задачами, а не их строго последовательного выполнения.
Конкурентность не означает истинное параллельное выполнение, которое требует мультипроцессорной среды. Конкурентность — это скорее способ структурирования программы, который позволяет эффективно использовать доступные ресурсы (например, ожидание ввода-вывода).
В Python основные механизмы для реализации конкурентности:
Сравнение механизмов:
| Механизм | Изоляция | GIL | Переключение | Случаи использования |
|---|---|---|---|---|
| Потоки (Threads) | Низкая | Да | ОС (preemptive) | Ввод-вывод связанные задачи (сеть, диск) |
| Процессы (Processes) | Высокая | Нет | ОС (preemptive) | Вычислительно-интенсивные задачи |
| Асинхронность (Asyncio) | Высокая | Нет | Кооперативное | Высоконагруженные I/O bound приложения (серверы) |
python
python
python