У меня довольно большой процесс, который делает много одновременно, и чем больше он может сделать одновременно, тем быстрее он работает с очень высоким потолком.
Я могу ограничить сегменты для того, сколько процессов может запускаться одновременно, но в зависимости от настроек, которые я передаю, 3 может работать одновременно без проблем, но с другими настройками 50 может работать одновременно. Если я пытаюсь запустить 50 одновременно, я думаю, что это увеличивает мою локальную вычислительную мощность и просто терпит неудачу с ошибкой «NotImplementedError: не может определить число процессоров».
Это противоречиво и варьируется в зависимости от большого количества факторов, которые невозможно определить до запуска. Имея это в виду, мне любопытно узнать, есть ли способ просто «успокоить» участника процесса и продолжить попытки, если он не сможет что-то обработать.
Вот полная трассировка стека:
Error
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/case.py", line 331, in run
testMethod()
File "/.../files/default/my_deployment/my_test_suite.py", line 255, in test_main_run
self.assertTrue(main.main(self.settings))
File "/.../files/default/my_deployment/main.py", line 60, in main
results = pool.map(connector.main, list)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 251, in map
return self.map_async(func, iterable, chunksize).get()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 567, in get
raise self._value
NotImplementedError: cannot determine number of cpus
И базовая настройка моей карты threadPool выглядит следующим образом:
with closing(ThreadPool(processes=settings.run_bucket)) as pool:
results = pool.map(connector.main, list)
pool.terminate()
successful_connections += sum(results)
Это вызывает основной процесс, который оченьно для больших наборов данных я обычно могу успешно разбить его на группы по 5, а на небольших наборах данных я могу установить для run_bucket значение выше 20 без сбоев.