Asyncio — это модуль в стандартной библиотеке Python, который предоставляет инфраструктуру для написания одновременного кода с использованием асинхронных операций ввода-вывода. Он идеально подходит для работы с сетевыми и другими операциями, которые могут блокироваться.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Основы asyncio
Чтобы начать работать с asyncio, вам нужно импортировать модуль и создать цикл событий (event loop). Это основной объект, который управляет асинхронными операциями. Вот простой пример:
import asyncio async def main(): print("Hello, asyncio!") asyncio.run(main())
Здесь мы определили асинхронную функцию main()
и вызвали ее с помощью asyncio.run()
. Это основной способ запуска асинхронного кода в Python.
Асинхронные операции
Asyncio предоставляет множество асинхронных операций, таких как сопрограммы, задачи, ожидание (awaitables) и многое другое. Вот пример асинхронного ожидания с использованием оператора await
:
import asyncio async def foo(): print("Start foo") await asyncio.sleep(1) print("End foo") async def main(): await foo() asyncio.run(main())
В этом примере функция foo()
выполняет асинхронную операцию asyncio.sleep()
, которая заставляет сопрограмму ждать указанное количество секунд. Затем мы используем оператор await
для вызова foo()
в функции main()
.
Создание и выполнение задач
Задачи — это способ запуска сопрограмм параллельно. Для создания задач используйте функцию asyncio.create_task()
. Вот пример:
import asyncio async def foo(): print("Start foo") await asyncio.sleep(1) print("End foo") async def main(): task = asyncio.create_task(foo()) await task asyncio.run(main())
Теперь функция foo()
запускается в виде задачи, и мы можем ожидать ее выполнения с помощью оператора await
.
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
Работа с несколькими задачами
Asyncio позволяет выполнять несколько задач одновременно, используя функцию asyncio.gather()
. Вот пример с несколькими асинхронными функциями:
import asyncio async def foo(): print("Start foo") await asyncio.sleep(1) print("End foo") async def bar(): print("Start bar") await asyncio.sleep(2) print("End bar") async def main(): await asyncio.gather(foo(), bar()) asyncio.run(main())
Здесь функции foo()
и bar()
выполняются параллельно, и программа завершается после выполнения обеих функций.
🚀 В заключение, модуль asyncio в Python позволяет создавать асинхронный код, который может выполнять операции ввода-вывода без блокирования. Это особенно полезно для работы с сетевыми операциями, такими как HTTP-запросы или работы с WebSocket. Не забудьте попрактиковаться и экспериментировать с различными асинхронными операциями и функциями!
Добавить комментарий