Как применить функцию к набору датасетов pandas используя все ядра машины?

Есть долговыполняемая функция func, которую нужно применить к набору датасетов pandas (лежат в словаре) используя все ядра машины.

Сейчас это делается последовательно через цикл. Грузит машину на 5%, считает медленно:

for name in city_names:
    func(DB[name])

Делала через потоки:

London = Thread(target=func, args=(DB['London']))
Paris = Thread(target=func, args=(DB['Paris']))

London.start()
Paris.start()

London.join()
Paris.join()

Выдает предупреждение:

Exception in thread Thread-

Также приходится вручную каждому городу назначать поток, а это не удобно, т.к. меняются списки городов для рассчетов.

Как применить функцию к набору датасетов pandas используя все ядра машины?


Ответы (1 шт):

Автор решения: Анна Лебедева

По совету @strawdog попробовала использовать modin

import modin.pandas as pd

Скорость работы с датасетами возросла в среднем 2 раза в моем случае. Отдельные функции, например pd.read_csv ускорились в 4 раза!

Для всего этого требуется только модификация импорта в одну строку кода. Руководство

→ Ссылка