Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
14 Фев 2023
3 мин
6374

Как работать с модулем asyncio в Python

Познакомьтесь с мощным модулем asyncio в Python для написания асинхронного кода и управления операциями ввода-вывода без блокирования!

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. Не забудьте попрактиковаться и экспериментировать с различными асинхронными операциями и функциями!

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий