Курс 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"

  1. Структура данных словарь в Python
  2. Область видимости переменных в Python
  3. Методы shutil для работы с файлами
  4. Строки в Python: апострофы и кавычки
  5. Генераторные функции в Python
  6. Конкатенация строк с join() в Python
  7. Потоковый ввод в Python
  8. Bootle — простой веб-фреймворк
  9. Регулярные выражения в Python
  10. Метод get для словаря
  11. Упрощение условных выражений с тернарным оператором
  12. Подсчет элементов в Python
  13. Отладчик pdb: начало работы
  14. Методы Python для работы с данными
  15. Функциональное программирование в Python
  16. Поиск индекса элемента
  17. Управление ресурсами с контекстными менеджерами
  18. Подписка на @SelectelNews
  19. Цикл for в Python
  20. Аргументы *args и **kwargs
  21. Объединение множеств в Python
  22. Строковое представление объектов
  23. Замена переменных в Python
  24. Реверс строки в Python
  25. Enum в Python
  26. Использование html-скриптов в Jupyter Notebook
  27. Генераторы в Python
  28. Метод remove() для удаления элемента из списка
  29. Работа с областями видимости переменных
  30. Избегание циклических зависимостей классов в Python
  31. Операторы увеличения и уменьшения в Python
  32. Метод is_absolute() для PurePath
  33. Python Менеджер контекста
  34. Игра «Камень, ножницы, бумага» — Python
  35. Распаковка значений в Python
  36. Работа с множествами в Python
  37. Сравнение объектов в Python
  38. Удаление ключа из словаря
  39. Тест скорости набора текста на Python
  40. Создание списка дат
  41. Функция reduce() в Python
  42. Подсказки типов в Python
  43. Возврат нескольких значений из функции
  44. Кортеж в Python: создание и использование
  45. Генераторы и сеты в Python
  46. Поиск частых элементов в списке
  47. Python Тесты и Гайды
  48. Декоратор Ajax required
  49. Сортировка в Python
  50. Обработка ошибки IndexError

Marketello читают маркетологи из крутых компаний