Видео с PyCon 2018 только что выложили, и я его только что придумал. Затем я связался с PSF, чтобы узнать, могу ли я разрешить ему вернуться в Китай для просмотра.
Во-первых, я сделал только два видео,
John Reese - Thinking Outside the GIL with AsyncIO and Multiprocessing
Andrew Godwin - Taking Django Async
Одним из них является применение async/await в группе Facebook, о котором говорил большой парень из Facebook, и, кстати, наконец-то продал рекламу.
Другой — большой парень в группе Django.Об async/await и одновременном продвижении ASGI — отдельная тема.
Сегодня вечером я расскажу о видео на Facebook и добавлю второе видео ==
Во-первых, это видео на Facebook очень короткое, но я думаю, что смысл очень важен.
Во-первых, в течение всего процесса не требуется особых навыков, что очень удобно для новичков, желающих познакомиться с миром Python 3.
Во-вторых, здесь не только рассказывается об асинхронности, методе с интенсивным вводом-выводом, но и обучаются некоторым навыкам использования многопроцессорной обработки.
В-третьих, выйдите из платформы, вы видите, что ее используют крупные производители, можем ли мы тоже попробовать?
ок, вернемся к теме
Прежде всего, босс группы Facebook рассказал свой сценарий использования
Главным среди них является необходимость запрашивать данные со многих интерфейсов и интегрировать их.
Сначала они использовали пул потоков для выполнения таких операций ввода/вывода под Python 2, а потом выяснили, брат, что это не так QAQ
Объем памяти велик, и он по-прежнему ограничен GIL. Затем они начали обновлять код до Python 3 (здесь голос за кадром, GIL был изменен один раз в Python 3.2, чтобы потоки работали лучше, см.Что нового в Python 3.2) Ну нашел после апгрейда
Улучшение производительности хорошее ==, так что день убьет Python 2.
Ну и еще большая проблема, что делать с ГИЛом.
Facebook дает два варианта
Первый, многопроцессорный
Затем дал небольшой трюк, чтобы использовать
Второй, асинцио
Сказал три особенности asyncio,
Первый — это использование шаблона Future (шаблон Future был введен в Python 3.2, предложен в PEP 3148, см. PEP 3148 — futures — выполнение вычислений асинхронно).
Во-вторых, asyncio быстрее, чем потоки.
В-третьих, параллелизм ввода-вывода
Затем он показывает самое простое использование asyncio.
Затем босс Facebook долго рассказывал о том, как совместить многопроцессорность и асинхронность, я не буду спойлерить здесь, вы можете пойти и посмотреть
Но есть одна вещь, которая мне нравится
Угадайте, в чем здесь изюминка?
Что ж, аннотация нового типа объекта использовалась, когда предыдущая функция была определена еще вPEP 484Типовые подсказки предложили ввести 3.5, и несколько последующих предложений были оптимизированы вокруг этого, например, 3.6.PEP 526, 3,7 изPEP 563Но это длинная история, давайте успеем написать острую куриную гидрологию и поговорим об этом в другой раз.
Тем не менее, type-annotation — это тенденция, и после ее использования в среде IDE опыт подсказок и проверок будет улучшен до более высокого уровня.
В итоге босс фейсбука лихо скинул картинку,
потом закинул библиотеку
jreese/aiomultiprocessзначок Это видео заканчивается здесь,
Хорошо, позвольте мне рассказать вам мои мысли
Во-первых, наша компания использует async/await, этот набор широко используется многими. В процессе ввода года я обнаружил, что официальный набор asyncio имеет много потенциальных ям, но его производительность действительно хороша. Поэтому я делаю это сладким ядом. Однако, несмотря на то, что я уже вычеркнул текущие столпы async/await в asyncio/Sanic/aiohttp, по правде говоря, async/await — очень значимая и полезная функция. В то же время окружение сообщества постепенно растет, например, python-trio/trio, и все больше и больше крупных компаний начинают его использовать и наступать на яму. Хотя я не осмеливаюсь сказать, что у async/await светлое будущее, но с последующим развитием он станет предпочтительным выбором для людей при работе с приложениями, интенсивно использующими ввод-вывод.
Итак, давайте сделаем это первым.
Кроме того, какое видео Django, прежде чем смотреть, рекомендуется посмотреть видео, предложенное командой разработчиков Django, которое все еще находится в черновике в качестве текущего PEP3333.PEP 3333 -- Python Web Server Gateway Interface v1.0.1Подробнее о предложении заменить ASGI на WSGI см.ASGI - Channels 2.1.1 documentation