Как управлять процессом python при использовании многопроцессорного метода - PullRequest
0 голосов
/ 07 августа 2020

У меня проблема при использовании многопроцессорности в Python. Один из моих процессов беззвучно останавливается. Как получить сигнал и перезапустить его автоматически.

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

def func_15():
    while 1:
        get_data
        send_data
...

if __name__ == '__main__':
    logging.info('===========PROCESS BEGIN================')
    
    logging.info('TIME15 - CREATING PROCESS')
    p0 = Process(target = func_15m, args = ())
    
    logging.info('TIME1 - CREATING PROCESS')
    p1 = Process(target = func_1h, args = ())
    
    logging.info('TIME4 - CREATING PROCESS')
    p2 = Process(target = func_4h, args = ())
    
    p0.start()
    p1.start()
    p2.start()
    
    p0.join()
    p1.join()
    p2.join()

Пожалуйста, помогите! Большое спасибо!

1 Ответ

1 голос
/ 11 августа 2020

Взгляните на этот вопрос Python Многопроцессорность: обработка дочерних ошибок в родительском и его ответы.

На вашем месте я бы сначала реализовал способ, чтобы увидеть, что делает l oop exit, поэтому сделайте исключение Распространить на родительский процесс. (Или просто оберните весь l oop в try catch и распечатайте исключение при обнаружении). Затем вы можете выяснить, можно ли это исправить в своей функции. Кроме того, есть объяснения, что делать, если вы хотите, чтобы процесс перезапускался, когда процесс останавливается.

...