Как использовать пространство имен менеджера для совместного использования фреймов данных между дочерними процессами? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть 3 огромных pandas кадра данных, которые хотят поделиться ими среди многопроцессорных в python. Эти большие фреймы данных находятся в глобальном пространстве основного процесса:

df1 = pd.read_csv('df1.txt')
df2 = pd.read_csv('df2.txt')
df3 = pd.read_csv('df3.txt')

Функция, которая будет отображена в моей итерации, выглядит следующим образом:

def my_func(start_date):
    sliced_df1 = df1[df1['start_date'] > start_date]
    sliced_df2 = df2[df2['start_date'] > start_date]
    sliced_df3 = df2[df2['start_date'] > start_date]
    new_df = sliced_df1.merge(sliced_df2)
    #other computations
    return final_df

Итерируемая также является списком дат :

dates_list = ['2020-04-01', '2020-04-02', '2020-04-03',...]

Многопроцессорная конфигурация выглядит следующим образом:

from multiprocessing import Pool
pool = Pool(processes=16)
final_iterations = pool.map(my_func,[date for date in dates_list])
pool.close()
final_iterations = pd.concat(final_iterations, ignore_index = True)

Поскольку df1, df2 и df3 находятся в основном процессе, они каким-то образом будут разделены среди многопроцессорных. Они не изменяются дочерними процессами и просто читаются. Я искал net, чтобы решить мою проблему, и я думаю, что мне нужно использовать Manger.Namespace, но я не уверен, как его использовать. Пара сообщений, которые я прочитал: это и это .

Я новичок в концепции многопроцессорной обработки и ценю любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...