В чем разница между потоками и механизмом async/await в Python

Python Senior Без компании
В чем разница между потоками и механизмом async/await в Python
Ответы
Потоки (`threading`) и async/await работают с конкурентностью, но по-разному: - **Потоки** используют системные потоки ОС, переключаются планировщиком. Подходят для CPU-bound задач, но имеют накладные расходы на переключение и проблемы с GIL (Global Interpreter Lock), который ограничивает параллельное выполнение Python-кода. - **Async/await** (asyncio) — однопоточный механизм, переключает задачи на уровне событийного цикла. Эффективен для IO-bound задач (сетевые запросы, файловые операции), но не подходит для CPU-bound операций, так как не использует дополнительные ядра. **Пример с потоками:** ``` import threading def task(): print("Thread running") thread = threading.Thread(target=task) thread.start() ``` **Пример с asyncio:** ``` import asyncio async def task(): print("Coroutine running") await task() # в асинхронной функции ``` **Выбор зависит от задачи:** потоки — для параллелизма с GIL, async — для эффективного ожидания IO.