Я хочу запустить процесс параллельно на нескольких ядрах. Поэтому я использую многопроцессорную библиотеку в 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, и перезапустить его, если это произойдет.
Я буду благодарен за каждый комментарий и предложение!