Встречается на собеседованиях • сегодня

В чем разница между асинхронностью с использованием потоков и asyncio

Основное отличие в подходе к параллелизму:

  • Потоки (threading) используют системные потоки ОС, что приводит к накладным расходам на переключение контекста и проблемам с GIL (Global Interpreter Lock) в CPU-bound задачах. Подходят для I/O-bound операций, но требуют синхронизации.

  • Asyncio использует кооперативную многозадачность в одном потоке через event loop. Корутины (async/await) добровольно отдают управление, что эффективнее для I/O-bound операций. Нет проблем с GIL, но блокирующий код "ломает" event loop.

Пример asyncio:

python
async def fetch_data():
    await asyncio.sleep(1)
    return "data"

async def main():
    result = await fetch_data()
    print(result)

asyncio.run(main())

Пример threading:

python
from threading import Thread

def fetch_data():
    time.sleep(1)
    return "data"

def main():
    thread = Thread(target=fetch_data)
    thread.start()
    thread.join()

Asyncio лучше для высоконагруженных I/O сервисов, threading — когда нужна совместимость с блокирующим кодом.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы