Многопроцессорная обработка: использование `pool.starmap` с большим словарем - PullRequest
0 голосов
/ 17 декабря 2018

Я делаю некоторые вычисления с 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 также не поможет.

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