Урок 28: Введение в асинхронное программирование с asyncio в Python
Введение в асинхронное программирование с asyncio в Python
Краткое введение
Asyncio — это библиотека в Python, предназначенная для написания асинхронного кода. Этот урок познакомит вас с основами асинхронного программирования, позволяя эффективно работать с операциями ввода-вывода и сетевыми запросами.
Теоретическая часть
Основы async и await
Async и await — ключевые слова в Python, используемые для определения асинхронных функций и ожидания их выполнения. С помощью этих конструкций можно создавать асинхронные программы, которые эффективно используют I/O операции.
Создание и запуск асинхронных функций
Узнайте, как определять асинхронные функции с async def и запускать их с использованием asyncio.run(), а также как работать с асинхронными итераторами и генераторами.
Примеры кода
# Простой пример асинхронной функции
import asyncio
async def main():
print('Hello')
await asyncio.sleep(1)
print('world')
asyncio.run(main())
Практические задания
1. Создайте асинхронную функцию, которая выполняет HTTP-запрос к API и обрабатывает полученные данные.
2. Напишите асинхронную программу, которая параллельно скачивает несколько веб-страниц и выводит содержимое каждой страницы после её загрузки.
Решение задания
# Асинхронный HTTP-запрос к API
import asyncio
import aiohttp
async def fetch_data(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.json()
# Параллельная загрузка веб-страниц
async def download_page(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
content = await response.text()
print(f'Content from {url}: {content[:100]}...')
async def main():
urls = ['https://example.com', 'https://example.org']
tasks = [download_page(url) for url in urls]
await asyncio.gather(*tasks)
asyncio.run(main())