Проверьте, не прерывается ли подпроцесс, и перезапустите, если True - PullRequest
0 голосов
/ 13 января 2020

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

Это пакеты и данные, которые я использую:

from frog import Frog, FrogOptions
import multiprocessing
textparts = ['these', 'are', 'eight', 'words', 'matching', 'the', 'eight', 'cores']

Функция, в которой запускается пул с 8 ядрами:

def analyse(textparts):
    p = multiprocessing.Pool(8)                     #Start a pool with 8 cores
    result = p.map(generate_pseudowords,textparts)  #collect the results, whereby generate_pseudowords 
                                                    #is the function to call and textparts the argument
                                                    #given to the function
    return(result)

Вот функция, которая должна запускаться параллельно на ядрах:

def generate_pseudowords(textparts):
    words = []
    frog = Frog(FrogOptions(parser=False))  #initiate Frog
    words.append(frog.process(textparts))   #<--- frog.process is the critical process that sometimes break;
                                            #However, if it doesn't break, frog.process takes every item of
                                            #textparts as an argument and its output is appended in words
    return(words)

Запустите его:

words = generate_pseudowords(textparts)

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

Я буду благодарен за каждый комментарий и предложение!

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