Рубрики
Без рубрики

Асинсио, непобедимый

Async Programming – это новый сексуальный, когда дело доходит до многозадачности. Это стало известно у Nodejs, но вы … Теги с питоном, асинхронным, асинсио.

Async Programming – это новый сексуальный, когда дело доходит до многозадачности. Это стало известно у Nodejs Но вы можете найти библиотеки, которые поддерживают его на большинстве основных языков.

Например, в Python два самых известных подхода являются использование веб-сервера TORNADO и встроенная библиотека Asyncio. На сегодняшний день мы сделаем введение в последнее, так как в последнее время он прошел тонны итераций и улучшений, и он готов очаровать людей с его интуитивным подходом.

Что такое Async Programming?

Это подход программирования, в котором мы бдительны, когда дело доходит до «мертвого времени». Например, если происходит ввод/вывод (например, я только что отправил запрос на получение, ожидая ответа), приложение может продолжать делать другие вещи. Некоторые люди называют это, идеальный секретарь.

Это может быть не для Python, но статья здесь Имеет отличную диаграмму, объясняющую потенциальный асинхронный поток.

Что не так с многопотативной?

Программа использует многопоточность, когда необходимо выполнить различные потоки для выполнения задач. Это требует много ухода, координации и пропитанности, поскольку потоки должны по крайней мере, не заблокируйте друг друга из общего ресурса (тупика). Не говоря уже о дополнительном накладных расходах в памяти, так как нитки должны иметь доступ к собственным копиям данных.

Здесь Вы можете найти связанную нить Stackoverflow.

Не то, чтобы многопоточье бесполезно. Напротив, некоторые операции синхронно в природе. Например, удаление огромного файла из вашей файловой системы. Некоторые люди могут сказать, что вы можете преодолеть это, используя подход на основе потока и удалить один небольшой кусок за раз, и они правы, я просто пытаюсь продемонстрировать точку.:-)

Async Programming, даже если он может работать вместе с многопотативной, может эффективно работать только с одним потоком. И большую часть времени вы не можете сказать разницу в производительности (я посещу этот вопрос в более поздней статье). Единственный «над головой» здесь, состоит в том, чтобы знать, что написание команд один за другим не означает, что они будут выполнены в той же последовательности

Asyncio – я выбираю тебя

асинсио это библиотека для записи параллельного кода с использованием синтаксиса Async/en a enque. Таким образом, хотя вы пишете асинхронный код, вы окажетесь с синхронным визуальным восприятием его, что делает ремонтопригодность немного легче.

Так вот как написать ASYNC код с Python, с комментариями, чтобы объяснить каждый шаг

# First import the library that provides all those bells and whistles
import asyncio

# Import datetime and calendar as our example is based on date handling
import datetime
import calendar

# Here is the important part. We declare a function as async. That means its execution
# will not block the application. For example, if you run the function outside
# of an async context it will print something like: 
# \ 
# and not the result you would expect in a synchronous execution.
async def show\_me\_the\_day():
 # Calendar is not asynchronous, so we duse asyncio.sleep to emulate the async nature
 # If for any reason you want to block the execution while
 # an async function is executed (eg you need the return value), use await.
 # Await can only be used in async functions, and only inside async functions
 await asyncio.sleep(1)
 return calendar.day\_name[datetime.date.today().weekday()]

async def main():
 # If for any reason you want to block the execution while
 # an async function is executed (eg you need the return value), use await.
 # Await can only be used in async functions, and only inside async functions
 day = await show\_me\_the\_day()
 print('Yo, today is ', day)

asyncio.run(main())

Помимо маленькой котельной, похоже, что вы читаете классический последовательный скрипт. Классическая магия Python.:)

Остерегайтесь, хотя

При использовании Asyncio есть одна большая оговорка. Это, что мы должны полагаться на асинхронные библиотеки, когда дело доходит до я/O. В противном случае усиление незначительно.

Заключение

Спасибо за прочтение этой статьи, надеюсь, вам понравилось. Python сделал много улучшений в том, как он обрабатывает асинхронное программирование, во время последней версии. Как всегда, радость и шедевр вместе. Я вернусь с ориентированной на производительность статьей и, возможно, пару рамки, которые вокруг.

Если вы хотите копаться глубже, официальный Документация Очень велик, пожалуйста, посмотрите.

Первоначально опубликовано в perigk.github.io Отказ

Оригинал: “https://dev.to/perigk/asyncio-the-invincible-13mk”