Курс Python → Параллельные вычисления в Python

Модуль concurrent.futures в Python предоставляет высокоуровневый интерфейс для работы с параллельными задачами. Он позволяет создавать пулы потоков и процессов для выполнения функций асинхронно, что позволяет улучшить производительность при работе с большими объемами данных. В данном примере мы рассмотрим использование ThreadPoolExecutor для параллельного выполнения функции над элементами списка.

Для начала необходимо импортировать модуль concurrent.futures:

import concurrent.futures

Затем мы создаем пул потоков с помощью ThreadPoolExecutor:

with concurrent.futures.ThreadPoolExecutor() as executor:
    results = executor.map(square, numbers)

Здесь функция square будет применена к каждому элементу списка numbers параллельно. Результаты будут возвращены в том же порядке, в котором задачи были отправлены. Метод map позволяет передать каждый элемент из списка в функцию и получить список результатов после завершения выполнения всех задач.

Аналогично, можно использовать ProcessPoolExecutor для выполнения задач в отдельных процессах. Это особенно полезно, когда необходимо выполнить вычисления, которые могут блокировать потоки (например, взаимодействие с вводом-выводом). Пример использования ProcessPoolExecutor:

with concurrent.futures.ProcessPoolExecutor() as executor:
    results = executor.map(square, numbers)

Таким образом, модуль concurrent.futures предоставляет удобный способ реализации параллельных вычислений в Python, что помогает улучшить производительность при работе с большими объемами данных.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Функции map, filter, reduce
  2. Проверка дублей в списке.
  3. Добавление элементов в список: append() vs extend()
  4. Генераторы списков
  5. Создание namedtuple из словаря
  6. Основы Python за 14 дней
  7. Оператор += для объединения строк
  8. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  9. Хранение данных с помощью dataclasses
  10. Оператор «is not» в Python
  11. Перезагрузка оператора в Python
  12. PUT запрос для обновления данных
  13. Создание объекта времени
  14. Проверка класса объекта
  15. Работа с аргументами командной строки в Python
  16. Форматирование данных с помощью pprint
  17. Изменения в обработке логических значений
  18. Работа с срезами в Python
  19. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  20. Получение размера объекта с sys.getsizeof()
  21. Enum в Python
  22. Объединение словарей в Python
  23. Python: динамическая типизация и проверка типов
  24. Импорт модулей в Python 3.12
  25. Введение в PyTorch
  26. Форматирование объектов с модулем pprint
  27. Транспонирование 2D-массива с помощью zip
  28. Очистка входных данных
  29. Многопоточность и асинхронное программирование в Python
  30. Работа с CSV файлами в Python
  31. Извлечение чисел из текста
  32. Подсчет элементов в списке с Counter
  33. Анонимные функции в Python
  34. Функция format() в Python
  35. Python: отличительная особенность — отступы
  36. Повторение элементов в Python
  37. Конструктор в Python
  38. Удаление дубликатов с помощью множеств
  39. Функция map() и ленивая оценка
  40. Генераторные выражения и islice.
  41. Генераторы в Python
  42. Поиск анаграмм с Counter
  43. Создание вкладок с TKinter
  44. Псевдонимы в Python

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