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

Как создать и использовать корутины в Python

Изучите, как создавать и использовать корутины в Python для асинхронного программирования с модулем asyncio!

Корутины являются одним из мощных механизмов, используемых в Python для асинхронного программирования. В этой статье мы рассмотрим, как создавать и использовать корутины в Python с использованием модуля asyncio.

Введение в корутины

Корутины — это функции, которые могут приостанавливать свое выполнение в определенной точке и затем продолжать его с того же места. Они отличаются от обычных функций тем, что не блокируют выполнение программы во время ожидания результата.

Создание корутин с async def

Чтобы создать корутину, используйте ключевое слово async def. Например, вот простая корутина, которая печатает «Hello, World!» через 3 секунды:

import asyncio

async def hello_world():
    await asyncio.sleep(3)
    print("Hello, World!")

asyncio.run(hello_world())

Использование await для ожидания выполнения корутины

Ключевое слово await используется для ожидания выполнения другой корутины. В примере выше мы ждем, пока asyncio.sleep(3) завершит выполнение, прежде чем продолжить.

Композиция корутин

Чтобы объединить результаты нескольких корутин, используйте функцию asyncio.gather(). Например, предположим, у нас есть две корутины, которые обрабатывают данные:

async def process_data1():
    await asyncio.sleep(2)
    return "Data 1 processed"

async def process_data2():
    await asyncio.sleep(4)
    return "Data 2 processed"

Теперь мы можем использовать asyncio.gather() для того, чтобы выполнить обе корутины параллельно:

async def main():
    result1, result2 = await asyncio.gather(process_data1(), process_data2())
    print(result1)
    print(result2)

asyncio.run(main())

Обработка ошибок в корутинах

Для обработки ошибок в корутинах используйте стандартный блок try-except. Например, предположим, что у нас есть корутина, которая может вызвать ошибку:

async def risky_coroutine():
    await asyncio.sleep(1)
    raise ValueError("Oops, something went wrong!")

Чтобы обработать эту ошибку, просто оберните вызов await в блок try-except:

async def main():
    try:
        await risky_coroutine()
    except ValueError as e:
        print(f"Caught an error: {e}")

asyncio.run(main())

Заключение

В этой статье мы узнали, как создавать и использовать корутины в Python с помощью модуля asyncio. Корутины позволяют нам писать асинхронный код, который не блокирует выполнение программы, делая его более производительным и легким для чтения.

Если вы хотите углубиться в асинхронное программирование на Python, рекомендуем посетить онлайн-школу для обучения разработке на Python. Удачи вам в изучении!

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

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