Асинхронное программирование в Python: от простого к сложному. Часть 5 Сегодня завершаем нашу серию про асинхронное программирование и поговорим про очереди (Queue) и асинхронные генераторы. Это те инструменты, которые помогают организовать поток данных между корутинами Начнем с самого частого сценария - обработка данных через очередь: async def download_images(queue: asyncio.Queue, urls: list[str]): """Загружает изображения и кладет их в очередь""" async with aiohttp.ClientSession() as session: for url in urls: try: async with session.get(url) as response: image_data = await response.read() await queue.put((url, image_data)) print(f"Загружено: {url}") except Exception as e: print(f"Ошибка загрузки {url}: {e}") async def process_images(queue: asyncio.Queue): """Обрабатывает изображения из очереди""" while True: try: url, image_data = await queue.get() try: # Какая-то обработка изображения await process_image(image_data) print(f"Обработано: {url}") finally: # Важно! Отмечаем задачу к
Асинхронное программирование в Python: от простого к сложному
26 марта 202526 мар 2025
2 мин