developer tip

모든 하위 프로세스가 완료 될 때까지 프로세스를 기다리시겠습니까?

copycodes 2020. 11. 8. 10:13
반응형

모든 하위 프로세스가 완료 될 때까지 프로세스를 기다리시겠습니까?


두 개 이상의 하위 프로세스를 만드는 주 프로세스가 있습니다. 주 프로세스가 모든 하위 프로세스가 작업을 완료하고 종료 할 때까지 기다리기를 원합니까?

 # main_script.py

 p1 = subprocess.Popen(['python script1.py']) 
 p2 = subprocess.Popen(['python script2.py'])
 ... 
 #wait main process until both p1, p2 finish
 ...

Popen객체는있다 .wait()(종료 상태를 리 튜닝, 외에, 등) 주어진 서브 프로세스의 완료를 기다릴 : 정확히 정의 방법을.

이 방법을 사용하면 프로세스 좀비가 너무 오래 눕는 것을 방지 할 수 있습니다.

(또는 호출 및 대기를 위해 subprocess.call()또는 subprocess.check_call()사용할 수 있습니다 . 프로세스에 IO가 필요하지 않은 경우 충분할 수 있습니다. 그러나 두 하위 프로세스가 병렬로 실행되어야하는 경우에는 옵션이 아닐 수 있습니다. , 그들은 ( check_) call().)

기다려야 할 하위 프로세스가 여러 개인 경우 다음을 수행 할 수 있습니다.

exit_codes = [p.wait() for p in p1, p2]

모든 하위 프로세스가 완료되는 즉시 반환됩니다. 그런 다음 평가할 수있는 리턴 코드 목록이 있습니다.


subprocess.call

자동으로 대기하며 다음을 사용할 수도 있습니다.

p1.wait()

참고 URL : https://stackoverflow.com/questions/15107714/wait-process-until-all-subprocess-finish

반응형