Введение
В последние годы популярность языка Python резко возросла. Он широко используется в операциях по развитию сети, науке о данных, развитии сети и вопросах сетевой безопасности.
Однако у Python нет абсолютно никакого преимущества в скорости.
Как Java сравнивается с C, C++, C# или Python с точки зрения скорости? Ответ почти полностью зависит от запускаемого приложения. Для этого нет идеального критерия, однако игра Computer Language Benchmarks Game — хороший способ.
Я хочу ответить на вопрос: почему Python от 2 до 10 раз медленнее других языков при запуске одной и той же программы? Почему мы не можем сделать это быстрее?
Вот главные причины:
- «Это GIL (глобальная блокировка интерпретатора)»
- «Это интерпретируемый язык, а не компилируемый язык»
- "Это язык с динамической типизацией"
Сегодня мы не будем беспокоиться о том, какая из вышеперечисленных причин оказывает наибольшее влияние на производительность, а поговорим о том, как мы можем сделать ее быстрее, чем ожидалось, и намного быстрее в Python 3.7.
2. Начните исследовать
Python представил синтаксические сахара async и await для сопрограмм в версии 3.5, что означает, что мы можем использовать сопрограммы для написания приложений Python, которые сделают наш код Python похожим на Node и заставят его выполняться асинхронно.
Конечно, это не наша цель сегодня
3. Введите тему
Среди множества веб-фреймворков Django, Tornado и колбы относительно зрелые, а такие структуры, как торнадо, могут также выбрать асинхронные методы, но мы не будем говорить о них сегодня.
То, о чем мы говорим, сильнееSanic
Чего говорить про Саника,думаю главная причина в том что он достаточно шустрый и его можно быстро построить.Пишет как Фляск,а говорит бездоказательно.Посмотрите на картинку.
Вот официальные результаты тестов
Разработчики Sanic говорят, что их вдохновила эта статьяuvloop: Blazing fast Python networking
Вот что я чувствую после двух лет использования
-
Быстро (круто) взлететь
-
Стройте быстро
-
Встроенная поддержка синтаксиса async/await
-
Сообщество медленно активизируется, и некоторые отличные плагины постепенно появляются по сравнению с предыдущей незрелостью.
-
Автоматически назначать процессы и управлять ими
Просто краткое описание моих ощущений.Цель сегодняшнего дня не в том, чтобы научить вас, как использовать Sanic, а в том, чтобы надеяться, что больше людей присоединятся к Sanic и ощутят удобство, которое принесло появление Sanic и других превосходных фреймворков.
прикреплятьОфициальная документация Sanic
3. Расширенный
Сказав так много, есть еще одна проблема. Мой веб использует сопрограммы, а это означает, что когда я работаю с базой данных, используя обычные pymysql и psycopg2, мы блокируем наши потоки. Независимо от того, насколько быстр наш веб-сервис, он застрянет в базе данных. Напрасно, тогда я приведу вам некоторые из моих часто используемых библиотек поддержки сопрограмм
- PostgreSQL: асинхронный
- Редис: Айоредис
- Платформа ввода/вывода: uvloop
Это некоторые из библиотек, которые я использую чаще.Лично мне нравится pg.Что касается других баз данных, таких как mysql, вы можете поискать самостоятельно.
С момента появления Sanic я использовал его для создания больших и малых веб-приложений, включая его все более полное сообщество и поддержку во всех аспектах, таких как появление таких библиотек, как sanic_session, чтобы он больше не казался таким трудоемким, так что он больше не сталкивается с тем, что ничего не может сделать для больших производственных сред, до сих пор я стремился изучить его небольшой плагин, если у вас есть лучшая поддержка Sanic, пожалуйста, оставьте сообщение
В-четвертых, подтереть жопу
Я найду время, чтобы обновить учебники Sanic и семейное ведро ниже.Если вам лень, лень и лень читать официальные документы, просто подождите, пока я (старший брат) обновлю его!
- Санич:Python заставляет ваше веб-приложение летать
- asyncpg
- aioredis
- uvloop
- sanic_session
- sso
- crypto/decrypt
- golang mixin
- middleware
- pub/sub/listeners