Перезапуск многопроцессорной обработки, если в любых запущенных процессах возникает исключение - PullRequest
1 голос
/ 30 сентября 2019

Мне интересно, как я мог бы перезапустить многопроцессорную задачу, если в каком-либо из ее запущенных процессов возникает исключение?

Я вызываю три экземпляра одной и той же функции, которые выполняют задачи независимо для большого, но конечного набора данных.

Если выдается исключение для любого из трех процессов, другие процессы продолжатся, но вычислительная мощность уменьшится. Мне интересно, как я мог обнаружить сбой (то есть исключение) в любом из процессов и полностью перезагрузить многопроцессорную задачу?

Вот фрагмент кода ниже - в этом примере я запускаю функцию example_func , который принимает список в качестве аргумента:

import multiprocessing

if __name__ == '__main__':
    p1 = multiprocessing.Process(target=example_func, args=([],))
    p2 = multiprocessing.Process(target=example_func, args=([],))
    p3 = multiprocessing.Process(target=example_func, args=([],))

    p1.start()
    p2.start()
    p3.start()

    p1.join()
    p2.join()
    p3.join()

Кроме того, есть ли лучший способ разработки этой многопроцессорной задачи? Здесь я работаю на трех ядрах - но я считаю, что есть более элегантный способ поставить в очередь это ...

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