Распределите рабочую нагрузку Python путем параллельной обработки с помощью этих фреймворков.

Pandas - очень популярная библиотека Python, поскольку она предоставляет удобный и гибкий API высокого уровня, а также высокопроизводительную реализацию. Pandas предлагает обширный список API для исследования обработки данных, но игнорирует производительность и масштабируемость вычислений. Pandas очень медленный или иногда не может выполнять исследования для большого набора данных, поскольку он использует одно ядро ​​процессора. Он не обеспечивает 100% использования ядер ЦП.

В этой статье мы обсудим 4 библиотеки с открытым кодом, которые могут распараллеливать существующую экосистему Pandas на нескольких ядрах ЦП:

Даск:

Dask - это библиотека Python с открытым исходным кодом для параллельных вычислений. Его можно использовать для масштабирования операций Numpy, Pandas, Scikit-Learn, а также для распараллеливания пользовательских функций между доступными ядрами ЦП. Dask позволяет распараллеливать ваши операции на ноутбуке или в большом распределенном кластере.

API, предлагаемые Dask, очень похожи на API Pandas, Numpy и Scikit-Learn, поэтому разработчикам не нужно беспокоиться об изучении нового материала. Dask предоставляет преимущества высокоуровневого API этих известных библиотек наряду с возможностями масштабирования.

Dask фактически построен на основе библиотек Pandas, Numpy и Scikit-Learn, по этой причине он обеспечивает высокоуровневую реализацию всех своих API.

Dask предоставляет высокоуровневую коллекцию, включая:

  • Dask Array: построен поверх Numpy
  • Dask Dataframe: построен на базе Pandas
  • Dask Bag: создан для работы с неструктурированными данными
  • Dask Delayed: распараллеливание пользовательских функций
  • Dask Futures: расширяет concurrent.futures интерфейс Python.

Для всех операций и манипуляций, выполняемых с коллекциями Dask, создается граф задач, который распараллеливается планировщиками Dask.

Чтобы узнать больше о Dask и его реализации:

Прочтите Репозиторий Dask Github и Документацию Dask

Vaex:

Vaex - это библиотека Python с открытым исходным кодом, разработанная для обработки фреймов данных вне ядра. Библиотеку Vaex можно использовать для визуализации и исследования большого набора данных. Vaex использует концепцию системы выражений, ленивых вычислений и отображения памяти для обработки наборов данных, превышающих объем памяти, и проведения исследований на них.

Vaex может почти мгновенно загрузить около 1 ТБ памяти с помощью сопоставления памяти. Vaex не выполняет никаких вычислений на лету, он создает систему выражений и выполняет вычисления только тогда, когда требуется или явно запрашивается.

Vaex предлагает эффективные алгоритмы и использует отложенные вычисления (ленивые вычисления) для выполнения вычислений. Vaex может обрабатывать около 10**9 rows/second. Vaex предлагает API, аналогичный API Pandas, и его можно интегрировать с Jupyter notebook и Jupyter Lab для обеспечения интерактивной визуализации.

Прочтите указанную ниже статью, чтобы узнать больше о реализации и работе библиотеки Vaex.



Перейдите на этот сайт, чтобы просмотреть документацию Vaex и репозиторий GitHub.

Модин:

Modin - это библиотека Python с открытым исходным кодом, построенная на основе библиотеки Pandas, которая может масштабировать рабочий процесс Pandas на все ядра ЦП. В отличие от других распределенных библиотек, Modin можно легко интегрировать с библиотекой Pandas. У Modin очень похожий API на Pandas.

Modin полностью использует ядра ЦП, тем самым увеличивая производительность выполняемых вычислений. Разработчикам не нужно сильно беспокоиться, изучая новые фрагменты кода, поскольку они должны внести в код единственную строку изменения, только оператор импорта.

Прочтите указанную ниже статью, чтобы узнать больше о реализации и работе библиотеки Modin.



Перейдите на этот сайт, чтобы просмотреть документацию Modin.

Параллельный IPython:

IPython Parallel или ipyparallel - это библиотека Python с открытым исходным кодом, в которой есть набор сценариев CLI для управления кластерами для Jupyter. Параллельный IPython позволяет использовать несколько ядер ЦП вашего ноутбука Jupyter.

Ipyparallel специально разработан для распараллеливания выполнения Jupyter Notebook в кластере. Он использует карту, которая применяет любую функцию к последовательности и распределяет работу по доступным ядрам ЦП. Для сложных задач разработчики могут назначить определенные функции для удаленного или параллельного запуска.

Чтобы узнать больше о том, как работает IPyParallel, и о его реализации, прочтите эту статью. Получите документацию по IPyton Parallel здесь.

Заключение:

В этой статье мы обсудили 4 распределенных библиотеки Python, которые могут масштабировать вычисления Pandas DataFrame. Эти библиотеки могут не только ускорить рабочий процесс Pandas, но также могут ускорить другие популярные библиотеки, такие как Scikit-Learn, Numpy, а также пользовательские функции.

Есть несколько других библиотек, которые могут распределять рабочий процесс по доступным ядрам ЦП, включая Ray, Pandarallel, Dispy, Joblib .

Использованная литература:

[1] Документация Dask: https://dask.org/

[2] Документация Vaex: https://vaex.io/docs/index.html

[3] Документация Modin: https://modin.readthedocs.io/en/latest/

Спасибо за чтение