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

Python Senior Без компании
В чем разница между корутинами и потоками в Python
Ответы
Корутины и потоки в Python решают задачи конкурентности, но работают по-разному: **Потоки (threading)** - Используют системные потоки ОС (GIL ограничивает параллелизм в CPython) - Переключение между потоками управляется ОС (preemptive multitasking) - Подходят для I/O-bound задач ``` import threading def task(): print("Thread running") thread = threading.Thread(target=task) thread.start() ``` **Корутины (asyncio)** - Работают в одном потоке (cooperative multitasking) - Переключение явное через `await` - Эффективны для I/O-bound задач с большим количеством соединений ``` import asyncio async def task(): print("Coroutine running") await task() # в async функции ``` **Ключевые отличия:** - Потоки могут выполняться параллельно (если GIL отпущен), корутины - только последовательно - Корутины потребляют меньше ресурсов (нет накладных расходов на переключение потоков) - Корутины требуют явного указания точек переключения (`await`)