Всем привет, друзья! Рассказываю базу о асинхронном программировании для новичков Python. Дабы помочь любимым новичкам, я решил создать эту тему (и пофармить симпатии). Что-ж, начинаем! 1. Основные понятия. Асинхронность в Python — это концепция программирования, которая позволяет выполнять задачи независимо друг от друга, без ожидания завершения предыдущих задач. Для использования асинхронного программирования в Python, необходимо знакомство с ключевыми словами async и await. 1.1. Примеры асинхронности. Вы, к примеру, читаете эту статью вечером. Скоро вам уже спать, так как завтра у вас важно мероприятие. Вот, вы уже ложитесь на теплую кровать, готовясь упасть в сон... Неужели вы будете смотеть все время сна на часы, что бы не опоздать на то самое мероприятие? Нет конечно, вы поставите будильник. Он сам решит, когда вас разбудить. В Python это работает так-же. Представим, что функция sleep() - процесс сна. А функция alert() - пробуждение. def sleep(): # сон... def alert(): time.sleep(...) # срабатывание будильника... Python def sleep(): # сон... def alert(): time.sleep(...) # срабатывание будильника... Вроде все идеально, но есть одна проблема... Мы не можем запустить функцию сна без будильника, так как мы проспим мероприятие! Но если мы включим будильник - то мы не сможем спать. Почему? Да потому что если мы запустим функцию alert() - нам придется ждать время, но сработает будильник и сна не будет. Асинхронность поможет нам и поспать - и пойти на мероприятие. Как? Узнаем в следующем блоке. 2. Построение асинхронности. Для начала нам необходимо скачать библиотеку asyncio. после этого опять строим две функции. import asyncio import time async def alert(): time.sleep(10) print("Просыпаемся!") async def sleep(): asyncio.create_task(alert()) print("Поставил будильник и сплю...") asyncio.run(sleep()) Python import asyncio import time async def alert(): time.sleep(10) print("Просыпаемся!") async def sleep(): asyncio.create_task(alert()) print("Поставил будильник и сплю...") asyncio.run(sleep()) Что же я тут расписал? Давайте разберем. Для того, что бы функция стала асинхронной - нам надо добавить 'async' перед обьявлением функции 'def'. Это мы сделали в двух функциях, в функции alert() для того, что бы мы не ждали будильника, а в функции sleep() потому, что вызвать асинхронную функцию из обычной нельзя. Но как же поступить, если мы попадаем в бесконечный цикл? В этом нам поможет как раз asyncio! В конце кода мы добавили - asyncio.run()! Эта функция запускает асинхронную функцию из любой функции. У нас она вызывает sleep(). Что же делает функция asyncio.create_task()? Запускает эту функцию, но не ждет ее выполнения. При запуске мы видим, что функция сна выполняется вне зависимости от функции будильника. И вот, мы с вами построили первую асинхронность. 3. Множество задач. Если вы хотите сделать множество задач асинхронными - ничего сложного нет, просто необходимо запустить несколько задач. task1 = asyncio.create_task(first()) task2 = asyncio.create_task(second()) # ... Python task1 = asyncio.create_task(first()) task2 = asyncio.create_task(second()) # ... Но! Если вы используете 2 функции с time.sleep() - они не будут работать. Что бы асинхронно поставить, например, 2 таймера - используем функцию await asyncio.sleep(), она не будет останавливать код. 4. Заключение. Итак, мы с вами научились строить асинхронные функции в Python. Вы сможете оптимизировать свой код, да и просто узнали что то новое. Не видел раньше такую тему на форуме, может я и просвятил какого нибудь новокека и он стал востребованным специальстом. Всем удачи и всем пока!