Курс 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. Определение размера папок в Python
  2. Заказ карты Тинькофф Black
  3. Профилирование данных с Pandas.
  4. Копирование списков в Python
  5. Создание и инициализация объектов
  6. Скрытие вывода данных
  7. Оценка точности модели
  8. Блок else в Python
  9. Встраивание HTML в Jupyter Notebook
  10. Именованные срезы в Python
  11. Поиск шаблона в начале строки
  12. Лямбда-функции в цикле
  13. Python: изменяемые и неизменяемые коллекции
  14. Работа с типами данных в Python с помощью pydantic.
  15. Работа с файлами в Python
  16. Псевдонимы в Python
  17. Работа с комплексными числами
  18. Метод invert для побитового отрицания
  19. Порядок операций в Python
  20. Поиск файлов по шаблону
  21. Рациональные числа в Python
  22. Импорт модулей в Python 3.12
  23. Создание и операции с дробями
  24. Блок else в циклах Python
  25. Работа с OpenCV
  26. Создание класса очереди
  27. Работа с PosixPath() в Python
  28. Открытие и запись файлов
  29. Python 3.12: Псевдонимы типов
  30. Профилирование с cProfile
  31. Lambda-функция в Python: использование с map() и sum()
  32. Сравнение строк в Python
  33. Очистка данных в Python
  34. Сортировка списка по индексам
  35. Выбор редактора кода.
  36. Создание генераторов в Python
  37. Константы в модуле cmath
  38. Многострочные комментарии в Python
  39. Создание задания в Cron
  40. Установка и использование Logzero
  41. Enum в Python
  42. Дефолтные параметры в Python
  43. Многопоточность и асинхронное программирование в Python
  44. Метод __ilshift__ для битового сдвига влево
  45. Склеивание строк без циклов
  46. Копирование объектов в Python
  47. Функция eval() в Python
  48. Оператор @ для умножения матриц

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