Я делаю некоторые вычисления с starmap
из multiprocessing
.Вот как это выглядит:
with Pool(processes=15) as pool:
results = pool.starmap(fun, [(arg2, arg1, i, dict1, dict2) for i in alist])
Однако, начиная с htop
, вычисления продолжают выполняться с одним ядром.Обратите внимание, что dict1 и dict2 представляют собой два больших словаря по 5 ГБ каждый при загрузке в память.Однако я также заметил, что занятость памяти уже перестала расти, а программа продолжает работать в одноядерном режиме.Есть ли ограничение при распараллеливании со словарем.Я использовал этот похожий подход с большими pandas.DataFrame
, и он прекрасно работает.
обновления: я провел несколько экспериментов, что заставляет меня поверить, что это не вопрос словаря (я пытался заменить их на DataFrame, но все жетакое же поведение), но размер данных, которые распараллеливаются.Использование частичной функции и map
также не поможет.