Этот вопрос проверяет понимание различий между способами выполнения задач: по очереди, параллельно и асинхронно.
Асинхронность — это умение переключаться между задачами без блокировки, пока одна из них ждёт ввода-вывода. Параллельность — это одновременное выполнение задач на разных ядрах. Асинхронный код не обязательно работает одновременно, но выполняется эффективно за счёт неблокирующих операций. Параллельность нужна для CPU-нагрузки, асинхронность — для I/O.
Асинхронность — модель выполнения, при которой задача может быть приостановлена во время ожидания и управление передается другой задаче.
Параллельность — одновременное выполнение нескольких задач на разных процессорных ядрах.
Применяется, когда программа много ждёт: сетевые запросы, работа с файлами, таймеры.
Главное преимущество — отсутствие блокировок.
Характеристики:
Использует один поток (обычно).
Переключение задач через event loop.
Идеальна для большого числа I/O операций.
Пример:
import asyncio
async def fetch():
await asyncio.sleep(1) # имитация I/O
return 42
Подходит для задач, активно загружающих CPU.
Характеристики:
Использует несколько потоков или процессов.
Выполнение действительно одновременно.
Требует синхронизацию данных.
Пример:
from concurrent.futures import ProcessPoolExecutor
def calc(x):
return x * x
with ProcessPoolExecutor() as pool:
result = pool.map(calc, range(10))
Асинхронность → переключение между задачами в рамках одного потока.
Параллельность → одновременная работа на нескольких ядрах.
Асинхронность экономит время ожидания; параллельность ускоряет расчёты.
Используйте асинхронность для сетевого ввода-вывода, параллельность — для CPU-интенсивных операций.
Уровень
Рейтинг:
5
Сложность:
4
Навыки
Python
Networks
Ключевые слова
Подпишись на Python Developer в телеграм