В чем разница между асинхронностью и многозадачностью
Python
Senior
Okko
В чем разница между асинхронностью и многозадачностью
Ответы
Асинхронность и многозадачность - разные подходы к параллельному выполнению кода:
**Многозадачность** (threading/multiprocessing) - параллельное выполнение задач с использованием нескольких потоков/процессов. ОС управляет переключением между ними. Пример с потоками:
```
from threading import Thread
def task():
print("Выполняю задачу")
t1 = Thread(target=task)
t2 = Thread(target=task)
t1.start(); t2.start()
```
**Асинхронность** (asyncio) - выполнение одной задачи с переключением между подзадачами при ожидании I/O. Управляется самим кодом через event loop:
```
import asyncio
async def task():
print("Начало задачи")
await asyncio.sleep(1)
print("Конец задачи")
asyncio.run(asyncio.gather(task(), task()))
```
Ключевые различия:
- Многозадачность использует несколько потоков/процессов, асинхронность - один
- Асинхронность эффективнее для I/O-bound задач, многозадачность - для CPU-bound
- Асинхронность требует специального синтаксиса (async/await), многозадачность - нет
- Многозадачность может использовать несколько ядер CPU