@AlexMt
Automation Q&A Lead

Что такое asyncio и в чём реальное отличие от многопоточности?

Раньше были promise (по части javascript) и в основном в тренде было обсуждать многопоточное программирование - создание тредов и управление ими: как правильно расставлять семафоры, ждать/не ждать события и т.д.

Сейчас много говорят про корутины и асинхронное выполнение кода т.н. asyncio (если говорить терминами python). В чём главное отличие в многозадачных операционных системах этого подхода, преимущества и недостатки, зачем оно вообще понадобилось и чем отличается от многопоточного подхода, когда ваше приложение создаёт несколько threads и они работают как бы параллельно?

Есть ли реальные примеры которые используют такой подход?
  • Вопрос задан
  • 2439 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Один человек ставит кастрюлю на плиту, ждёт пока она закипит, закидывает пельмени, ждёт пока сварятся, снимает, ставит вторую, ждёт пока закипит... - последовательное однопоточное выполнение.

Один человек ставит две кастрюли на плиту, как только одна из них закипела, забрасывает пельмени и т.д. - асинхронное выполнение.

Два человека ставят две кастрюли... - многопоточное выполнение.

Очевидно, что при асинхронном выполнении ресурсов требуется меньше, а скорость та же, что и при многопоточном. Именно поэтому проблема c10k могут решать только асинхронные сервера. Минусы в том, что асинхронный код сложнее и не всё можно выполнять асинхронно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
apache - многопоточный веб-сервер.
nginx - асинхронный.
Угадайте почему на задачи обслуживающие 100500 запросов в секунду ставят nginx?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы