두 개의 알고리즘 A와 B가 있습니다. 두 알고리즘 모두 입력과 동일한 문자열을 사용하고 문자열을 반환하고 새 문자열을 반환합니다.Python 3 : 2 개의 프로세스를 시작하려면 어떻게 시작합니까? 먼저 끝나면 응답을 반환하고 다른 프로세스는 일찍 종료합니다.
수행되는 변환은 매우 CPU 집약적 일 수 있으며 알고리즘에는 문제에 대한 다른 접근 방식이 있습니다. 알고리즘은 입력 문자열에 따라 크게 다르게 수행하지만, 어떤 알고리즘이 변환을 적용하는지에 대한 대답은 신경 쓰지 않습니다.
def process_alg1(algorithm1, input_string)
ans_string = algorithm1(input_string)
q.put(ans_string)
def process_alg2(algorithm2, input_string)
ans_string = algorithm2(input_string)
q.put(ans_string)
def apply_transformation(input_string):
q = multiprocess.Queue()
process_alg1(input_string)
process_alg2(input_string)
final_answer = q.get()
stop(slowest_process)
내가 데몬 프로세스를 사용해야합니다 같은데요 :
은 좀 더 문제를 설명하기 위해 일부 사이비 코드를 작성했습니다? 나는 어떤 접근을해야할지 모르겠다. 프로세스와 느린 프로세스를 멈추게하는 일종의 핸들러 사이에 파이프 라인을 설정합니까? 데몬과 대기열을 사용하여이 작업을 수행 할 수 있습니까?
동일한 알고리즘에 대해 여러 입력에 대한 예제가 많이 있지만 동일한 입력으로 작동하는 여러 알고리즘에 대한 예제가 없습니다.
감사합니다.
주기적으로 자식 프로세스 ''아직 종료가 있는지 확인하려면 exitcode' 속성을 폴링 주요 과정을해야합니다. 다른 자식 (또는 둘 다)이 주기적으로 검사하여 종료 할 것을 알기 위해 일종의 공유 변수를 수정해야합니다. sigkill을 보내는 것은 좋지 않으며, 동등한 직접 창을 가지지 않습니다. – Aaron
@Aaron, 둘 다 데몬 프로세스를 사용하고 내 프로그램의 다른 부분에서이 apply_transformation 함수를 호출하면 apply_transformation 호출 후 또는 전체 프로그램이 완료된 후 프로세스가 종료됩니까? –
dameon 프로세스와 같은 것은 없습니다 .. 스레드 만 – Aaron