Курс 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. Проверка кортежей.
  4. Python 3.12: переиспользование кавычек
  5. Частичное совпадение пользовательского ввода в Python 3.10
  6. Выбор редактора кода.
  7. Принципы LSP и ISP в Python
  8. Метод rsub для пользовательских чисел
  9. Изменения в обработке логических значений
  10. Методы сравнения множеств
  11. Печать списка с помощью метода join
  12. Работа с буфером обмена на Python
  13. Имена объектов в Python
  14. Руководство по библиотеке pydantic
  15. Склеивание строк через метод join()
  16. Множественные конструкторы в Python
  17. Запуск Python из интерпретатора
  18. Извлечение аудио из видео
  19. Распаковка аргументов в Python
  20. Регулярные выражения: метод match
  21. Ускоренный импорт библиотек
  22. Создание GUI с Tkinter: Entry
  23. Генерация случайных данных в NumPy
  24. Экранирование символов в Python
  25. Операции с комплексными числами
  26. Установка Home Assistant
  27. Передача аргументов через **arguments
  28. Тестирование модели в PyTorch
  29. Многострочные строки в Python
  30. Передача словаря через **kwargs
  31. Применение функции map() с лямбда-функциями
  32. Оператор объединения словарей
  33. Преобразование данных в Python
  34. Многострочные комментарии в Python
  35. Глобальные переменные в Python
  36. Работа со случайными элементами
  37. Генерация фальшивых данных с Faker
  38. Нахождение отличий в списках
  39. Работа со словарями
  40. Путь к интерпретатору Python
  41. Оператор continue в Python
  42. Получение пути к текущему скрипту с помощью os
  43. Определение объема памяти объекта
  44. Оптимизация поиска в словарях
  45. Принципы программирования
  46. Работа с модулем bisect
  47. Чтение и запись TOML-конфигов
  48. Работа со строками в Python

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