Я определил функцию 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