Как применить функцию к набору датасетов 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 раза!
Для всего этого требуется только модификация импорта в одну строку кода. Руководство