Курс Python → Асинхронное выполнение задач в Python
Модуль asyncio в Python предоставляет возможность асинхронной работы с сетью и вводом-выводом, что позволяет эффективно управлять множеством задач без блокировки потока выполнения. Он особенно полезен при работе с сетевыми запросами, обработке больших объемов данных и других операциях, которые требуют ожидания выполнения ввода-вывода.
Давайте рассмотрим пример использования модуля asyncio для асинхронного выполнения трех задач, которые имитируют запросы к разным URL-адресам. Для начала определим асинхронную функцию fetch_data, которая будет выполняться параллельно с другими задачами. Внутри этой функции мы используем await asyncio.sleep(2) для имитации ожидания выполнения ввода-вывода в течение 2 секунд.
import asyncio
async def fetch_data(url):
await asyncio.sleep(2)
print(f"Data fetched from {url}")
async def main():
tasks = [fetch_data(url) for url in ["url1", "url2", "url3"]]
await asyncio.gather(*tasks)
asyncio.run(main())
Затем мы создаем список задач, каждая из которых вызывает функцию fetch_data с разным URL-адресом. Далее мы используем функцию asyncio.gather, чтобы запустить все задачи параллельно и дождаться их завершения. Таким образом, мы эффективно управляем выполнением нескольких задач асинхронно, не блокируя основной поток выполнения.
Использование модуля asyncio позволяет значительно ускорить выполнение программы, особенно при работе с сетевыми запросами, когда ожидание ответа от удаленного сервера может занимать значительное время. Кроме того, asyncio обеспечивает удобный механизм для организации асинхронного кода и управления множеством задач, делая программу более отзывчивой и эффективной.
Другие уроки курса "Python"
- Встраивание HTML в Jupyter Notebook
- enumerate() в Python для работы с индексами
- Функция с *args.
- Форматирование данных с pprint
- Запуск внешних программ с subprocess
- Метод get для словарей
- Работа с SQLite в Python
- Проверка индексов коллекции
- Открытие и редактирование скриптов Python
- Переопределение метода __or__()
- Модуль itertools: эффективная работа с итераторами
- Модуль future Python
- Вакансии в Nebius
- Извлечение аудио из видео
- Работа с timedelta
- Измерение потребления памяти при сортировке
- Переворот списка в Python
- Локальные переменные.
- Работа с библиотекой requests
- Замена переменных в Python
- Разработка игры Pong с turtle
- Делегирование в Python
- Объединение, распаковка и деструктуризация
- Замена текста с re.sub()
- Функция findall() для поиска вхождений строки
- Обход элементов в Python
- Работа с модулем Calendar
- Создание новых списков
- Замена символов в Python
- Обработка элементов в Python
- Исправление ошибки NameError
- Генераторные функции в Python
- Комментарии в Python
- Перевод двоичного кода в целое число
- Добавление элемента в список.
- Работа с срезами в Numpy
- Оператор распаковки в Python
- Счетчик ссылок в Python
- Сравнение def и lambda функций в Python
- Проверка надежности пароля на Python
- Создание генераторов
- Объединение кортежей в Python
- Работа с CSV в Python
- Конкатенация строк с join() в Python
- Метод count в Python: почему count(», ») возвращает 4?















