내 코드는 subprocess.Popen 함수를 사용하여 다른 python 스크립트를 실행하는 여러 프로세스를 호출하고 모두 실행을 마칠 때까지 기다립니다. 가끔 (동일한 매개 변수를 사용하더라도 모든 실행이 아님) 하나 이상의 프로세스가 실행되고 있지 않습니다 (호출 된 코드의 첫 번째 것은 이러한 경우 생성되지 않는 로그 파일의 생성입니다).subprocess.Popen은 때때로 0이 아닌 종료 코드를 반환합니다.
for fname1 in input_files_1:
cmd_list = create_batch_cmd(fname1)
print (' '.join(cmd_list))
p_list.append(Popen(' '.join(cmd_list), shell=True))
logging.info("started process for %s" % fname1)
logging.info("waiting for processes")
ps_status = []
while True:
ps_status = [p.poll() for p in p_list]
if all([x is not None for x in ps_status]):
break
logging.info("all processes finished")
print ps_status
ps_status는 일반적으로 0 목록입니다.
[0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0]
무엇이 발생할 수 : 12 개 프로세스의 실행에 는 3 ps_status했다, 실패했을 때? 어떻게 조사 할 수 있습니까? 감사합니다.
while-construct 대신 전체 ps_status = [p_list (p)에 p에 대해 쓸 수 있습니다. – xtofl