Многопроцессорная обработка Python с пулом, выполняющим только 400 заданий из 2000 и останавливающимся - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу запустить модуль кода на 2000 отдельных данных.Для этого я использовал следующий код Python

num_workers = multiprocessing.cpu_count() 
pool = multiprocessing.Pool(processes=num_workers)
print 
results = [pool.apply_async(run_Nested_Cage, args=(bodyid,)) for bodyid in body_IDs]
output = [p.get() for p in results]

Он работает нормально для 50 данных в body_IDs, но когда я даю 2000 тел, он начинает работать нормально, но после генерации результатов для 424 тел программа останавливается безЛюбая ошибка.

Я запускаю его на AWS EC2 Linux Ubuntu Server с 8-ядерным 32 ГБ оперативной памяти и 100 ГБ хранилища.

Может кто-нибудь помочь мне определить решение?

1 Ответ

0 голосов
/ 04 апреля 2019

Звучит как проблема с памятью, необработанное исключение или проблема сложности кода.

  1. Добавьте некоторые «отладочные» журналы, которые вы можете отключить позже
  2. Вместо одного огромного пула, попробуйте вращаться среди пула
  3. Иногда завершает работу экземпляра пула, чтобы освободить память
  4. Запустить некоторые профилировщики

Профилировщики:

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