기본적으로 스크립트를 사용하여 다른 디렉토리에서 다른 스크립트를 시작하고 모든 "하위 스크립트"가 완료 될 때까지 후속 작업을 수행하려고합니다. 나는 다중 처리를 사용한다. 모든 자식 프로세스를 함께 넣고 wait()를 사용하여 모두 완료 될 때까지 기다린다.python 스크립트를 사용하여 다른 python 스크립트를 시작하고 "자식 스크립트"가 모두 완료되었는지 확인하는 방법?
import os, shutil, subprocess,sys, multiprocessing
rootdir=os.getcwd()
argument=[]
def Openpy(inputinfo):
dirpath, filename= inputinfo
os.chdir(dirpath)
return subprocess.Popen([ 'python', filename ])
if __name__=="__main__":
for dirpath, dirname , filenames in os.walk(rootdir):
for filename in filenames:
if filename=='Test.py':
argument.append([ dirpath, filename ])
print argument
po=multiprocessing.Pool()
r=po.map_async(Openpy, argument)
po.close()
r.wait()
print 'Child scripts are finished'
자식 프로세스가 1 분 정상적으로 시작과 마무리 : 여기 내 스크립트입니다. 그러나 이러한 자식 프로세스는 "완료된 메시지"를 부모 프로세스로 반환하지 않는 것으로 보입니다. 그것은 "어린이 스크립트가 끝났다"는 것을 보여주지 않았습니다. 자식 프로세스의 끝을 제대로 감지 할 수 있도록 내 코드를 변경하려면 어떻게해야합니까?
모든 도움을 주실 수 있습니다!
2013년 9월 1일 세계 협정시 09시 16분 + 8
J.F. 세바스찬의 답변이 접수되고있다. 목록 이해력을 성공적으로 잘 사용하면 전체 내용을 더 쉽게 읽을 수 있습니다. r.wait()와 po.close의 위치를 (교환
들여 쓰기 참조? 마지막 줄도 '탭'으로 들여 쓰기해야한다고 생각합니다. – pwagner