Многопроцессорная обработка Python не ускоряет статистическое моделирование - PullRequest
0 голосов
/ 19 ноября 2018

Я определил функцию Python для использования всех ядер ЦП для параллельного построения моделей ARIMA (Financial Forecasting).Сервер, на котором выполняется этот код, имеет 48 ядер.Итак, я делю свой большой массив данных Pandas на 40 разделов (чтобы быть на более безопасной стороне) и обрабатываю все разделы параллельно, используя функцию пула многопроцессорного модуля.«Функция func» - это функция, которая возвращает результирующий кадр данных после применения Statsmodels ARIMA к отдельным разделам.Хотя я ясно вижу, что в моей оболочке UNIX одновременно выполняется несколько процессов, я не наблюдаю фактического ускорения при непараллельной обработке.Я думаю, это связано с более медленным межпроцессным взаимодействием.Что я могу изменить в своем коде, чтобы повысить скорость обработки?

def MultiProcessing_dataframe(df, func):
   n_Partitions = 40
   df_split   = np.array_split(df, n_Partitions)
   pool = multiprocessing.Pool()
   Results = pd.concat(pool.map(func, df_split))
   pool.close()
   pool.join()
   return Results
...