Асинхронное программирование на asyncio
Ассинхроность дает нам плюс к многозадачности.Даваете посмотрим два примера кода:
Без ассинхроности
И с ассинхроностью:
Здесь скорость двух примеров относительна близка,но в больших проектах лучше использовать ассинхроность.
Теперь переидем к обьяснению:
Асинхронность (асинхронное программирование) в программировании означает выполнение задач без явного ожидания завершения предыдущих задач. Вместо того, чтобы блокировать выполнение программы при ожидании завершения операции, асинхронный код позволяет программе продолжать работу и выполнять другие задачи во время ожидания.
Пример кода:
В этом примере мы используем модуль asyncio для создания асинхронной программы. Есть две асинхронные задачи task1() и task2(), которые имитируют длительные операции, используя await asyncio.sleep() для приостановки выполнения на определенное время.
Функция main() является точкой входа в программу и запускает задачи task1() и task2() параллельно с помощью asyncio.gather(). Важно отметить, что когда одна из задач ожидает (await), другая задача может продолжить выполнение, не блокируя программу.
Выполнение кода показывает, что "Task 1 started" и "Task 2 started" выводятся одновременно, а затем после задержки "Task 2 completed" выводится раньше, чем "Task 1 completed". Это демонстрирует параллельное выполнение асинхронных задач.
Асинхронность позволяет эффективно использовать ресурсы и повышает отзывчивость программы, особенно когда есть операции ввода-вывода (I/O), такие как чтение из сети или запись на диск. Вместо блокировки выполнения при ожидании I/O операций, асинхронный код может переключаться между задачами, позволяя другим задачам продолжать выполнение.
Обратите внимание, что для запуска асинхронной программы мы используем asyncio.run(main()), которая создает цикл событий asyncio и запускает функцию main() в этом цикле событий.
Спасибо за просмотр статьй.
P.S Подпишись