Обеспечение выполнения работниками пула перед загрузкой следующего для повышения эффективности памяти. - PullRequest
0 голосов
/ 23 мая 2018

Я пытался понять многопроцессорный модуль.

У меня есть 1000 файлов (общий размер = 8 ГБ), которые содержат строки, которые мне нужно отфильтровать.Я создаю два документа для каждого файла filename_good filename_bad на основе моих критериев фильтрации.

  • Ниже приведен список из 1000 имен файлов
  • моя процедура, которая выполняет фильтрацию и запись
  • Я пытался изменить chunksize и maxtasksperchild, однако продолжаю получать ошибки памяти
  • Каждый из 8 процессов не завершает свою программу перед открытием следующего файла;отсюда и ошибки памяти.
  • Я бы подумал, что maxtasksperchild заставил бы каждого завершить процедуру перед тем, как ее убить и создать новый процесс.

from multiprocessing import Pool if __name__ == '__main__' : with Pool(processes=8, maxtasksperchild=1) as pool: pool.map(startroutine,globs,chunksize=1)

...