- 20.06.2022
- 24 140
- 219
- 36
- Награды
- 10
- Пол
- Муж.
Репутация:
- Автор темы
- Администратор
- Модератор
- Команда форума
- #1
Рассказываю базу о асинхронном программировании для новичков Python.
Асинхронность в Python — это концепция программирования, которая позволяет выполнять задачи независимо друг от друга, без ожидания завершения предыдущих задач. Для использования асинхронного программирования в Python, необходимо знакомство с ключевыми словами async и await.
Основные понятия:
Вы, к примеру, читаете эту статью вечером. Скоро вам уже спать, так как завтра у вас важно мероприятие. Вот, вы уже ложитесь на теплую кровать, готовясь упасть в сон... Неужели вы будете смотеть все время сна на часы, что бы не опоздать на то самое мероприятие? Нет конечно, вы поставите будильник. Он сам решит, когда вас разбудить. В Python это работает так-же.
Представим, что функция sleep() - процесс сна.
А функция alert() - пробуждение.
Вроде все идеально, но есть одна проблема... Мы не можем запустить функцию сна без будильника, так как мы проспим мероприятие! Но если мы включим будильник - то мы не сможем спать. Почему? Да потому что если мы запустим функцию alert() - нам придется ждать время, но сработает будильник и сна не будет. Асинхронность поможет нам и поспать - и пойти на мероприятие. Как? Узнаем в следующем блоке.
Построение:
Для начала нам необходимо скачать библиотеку asyncio. после этого опять строим две функции.
Что же я тут расписал?
Давайте разберем. Для того, что бы функция стала асинхронной - нам надо добавить 'async' перед обьявлением функции 'def'.
Это мы сделали в двух функциях, в функции alert() для того, что бы мы не ждали будильника, а в функции sleep() потому, что вызвать асинхронную функцию из обычной нельзя. Но как же поступить, если мы попадаем в бесконечный цикл? В этом нам поможет как раз asyncio!
В конце кода мы добавили - asyncio.run()!
Эта функция запускает асинхронную функцию из любой функции. У нас она вызывает sleep(). Что же делает функция asyncio.create_task()? Запускает эту функцию, но не ждет ее выполнения. При запуске мы видим, что функция сна выполняется вне зависимости от функции будильника. И вот, мы с вами построили первую асинхронность.
Множество задач:
Если вы хотите сделать множество задач асинхронными - ничего сложного нет, просто необходимо запустить несколько задач.
Но! Если вы используете 2 функции с time.sleep() - они не будут работать. Что бы асинхронно поставить, например, 2 таймера - используем функцию await asyncio.sleep(), она не будет останавливать код.
Итоги:
Итак, мы с вами научились строить асинхронные функции в Python. Вы сможете оптимизировать свой код, да и просто узнали что то новое.
Асинхронность в Python — это концепция программирования, которая позволяет выполнять задачи независимо друг от друга, без ожидания завершения предыдущих задач. Для использования асинхронного программирования в Python, необходимо знакомство с ключевыми словами async и await.
Основные понятия:
Вы, к примеру, читаете эту статью вечером. Скоро вам уже спать, так как завтра у вас важно мероприятие. Вот, вы уже ложитесь на теплую кровать, готовясь упасть в сон... Неужели вы будете смотеть все время сна на часы, что бы не опоздать на то самое мероприятие? Нет конечно, вы поставите будильник. Он сам решит, когда вас разбудить. В Python это работает так-же.
Представим, что функция sleep() - процесс сна.
А функция alert() - пробуждение.
Python:
def sleep():
# сон...
def alert():
time.sleep(...)
# срабатывание будильника...
Вроде все идеально, но есть одна проблема... Мы не можем запустить функцию сна без будильника, так как мы проспим мероприятие! Но если мы включим будильник - то мы не сможем спать. Почему? Да потому что если мы запустим функцию alert() - нам придется ждать время, но сработает будильник и сна не будет. Асинхронность поможет нам и поспать - и пойти на мероприятие. Как? Узнаем в следующем блоке.
Построение:
Для начала нам необходимо скачать библиотеку asyncio. после этого опять строим две функции.
Скрытое содержимое доступно для зарегистрированных пользователей!
Что же я тут расписал?
Давайте разберем. Для того, что бы функция стала асинхронной - нам надо добавить 'async' перед обьявлением функции 'def'.
Это мы сделали в двух функциях, в функции alert() для того, что бы мы не ждали будильника, а в функции sleep() потому, что вызвать асинхронную функцию из обычной нельзя. Но как же поступить, если мы попадаем в бесконечный цикл? В этом нам поможет как раз asyncio!
В конце кода мы добавили - asyncio.run()!
Эта функция запускает асинхронную функцию из любой функции. У нас она вызывает sleep(). Что же делает функция asyncio.create_task()? Запускает эту функцию, но не ждет ее выполнения. При запуске мы видим, что функция сна выполняется вне зависимости от функции будильника. И вот, мы с вами построили первую асинхронность.
Множество задач:
Если вы хотите сделать множество задач асинхронными - ничего сложного нет, просто необходимо запустить несколько задач.
Python:
task1 = asyncio.create_task(first())
task2 = asyncio.create_task(second())
# ...
Но! Если вы используете 2 функции с time.sleep() - они не будут работать. Что бы асинхронно поставить, например, 2 таймера - используем функцию await asyncio.sleep(), она не будет останавливать код.
Итоги:
Итак, мы с вами научились строить асинхронные функции в Python. Вы сможете оптимизировать свой код, да и просто узнали что то новое.
Последние темы в этом разделе:
- Настраиваем прием платежей CryptoBotом
- [Alex Erofeev] [Stepik] JavaScript: самый быстрый курс (2024)
- [Михаил Русаков] Написание лайфхаков на Python (2021)
- Пишем DDOS скрипт на Python
- [Саид Магомедов] Python. Микросервисы. Backend на FastAPI [Stepik] (2024)
- Как написать чат-бота на python
- Пишем скрипт по парсингу ответов из gdz.ru
- [Udemy] Кибербезопасность: тестирование на проникновение с помощью Python 3 (2022)
- [Udemy] [ENG] Продвинутый ИИ - глубокое обучение с подкреплением в Python (2024)
- Создание бесплатного API для генерации изображений, используя перехваченные запросы Flux