Экологические предположения
>= Python 3.5Linux
Преимущество
- Очень хорошо подходит для задач асинхронного ввода-вывода
- Модель программирования проще и менее обременительна:
- Используйте asyncio, чтобы получить цикл событий
- Затем вставьте вещи в этот цикл (сопрограммы)
- Операционная система по-прежнему видит один поток, но с точки зрения макросов она видит «множественный параллелизм» (это почти одинаково для каждого языка: реализуйте многопоточную модель в пользовательском режиме).
недостаток
- Экология незрелая (хотя есть аио-либы), было бы неплохо, если бы были соответствующие реализации для библиотек типа запросов (популярность тоже высокая)
- Есть посылка: приложение должно быть асинхронным от начала до конца, что обременительно для многих устаревших проектов.
По сравнению с gevent + Python 2
- Многие проекты основаны на Python 2, и эффект от использования gevent очевиден.
- Беспокоит только одно: у gevent будет много патчей (взломать стандартную библиотеку), а то, что мы видим, это черный ящик, волноваться не приходится
- Эффективность gevent не обязательно ниже, чем у asyncio + async def
(Вообще-то я немного фанат gevent. В нашем проекте много используется gevent, и эффект неплохой. Почему бы и не использовать!)
как пользоваться
- asyncio в качестве нашего фреймворка (я предпочитаю то, что есть в стандартной библиотеке), async def/await в качестве основного метода проектирования
- Много используйте различные библиотеки в aio-libs (должны быть асинхронными от начала до конца!)