Преимущества и недостатки асинсио

Python

Экологические предположения

  1. >= Python 3.5
  2. Linux

Преимущество

  1. Очень хорошо подходит для задач асинхронного ввода-вывода
  2. Модель программирования проще и менее обременительна:
    1. Используйте asyncio, чтобы получить цикл событий
    2. Затем вставьте вещи в этот цикл (сопрограммы)
  3. Операционная система по-прежнему видит один поток, но с точки зрения макросов она видит «множественный параллелизм» (это почти одинаково для каждого языка: реализуйте многопоточную модель в пользовательском режиме).

недостаток

  1. Экология незрелая (хотя есть аио-либы), было бы неплохо, если бы были соответствующие реализации для библиотек типа запросов (популярность тоже высокая)
  2. Есть посылка: приложение должно быть асинхронным от начала до конца, что обременительно для многих устаревших проектов.

По сравнению с gevent + Python 2

  1. Многие проекты основаны на Python 2, и эффект от использования gevent очевиден.
  2. Беспокоит только одно: у gevent будет много патчей (взломать стандартную библиотеку), а то, что мы видим, это черный ящик, волноваться не приходится
  3. Эффективность gevent не обязательно ниже, чем у asyncio + async def

(Вообще-то я немного фанат gevent. В нашем проекте много используется gevent, и эффект неплохой. Почему бы и не использовать!)

как пользоваться

  1. asyncio в качестве нашего фреймворка (я предпочитаю то, что есть в стандартной библиотеке), async def/await в качестве основного метода проектирования
  2. Много используйте различные библиотеки в aio-libs (должны быть асинхронными от начала до конца!)