Я запускаю процесс (используя Popen), и через некоторое время этот процесс выполняет дочерний процесс.
Что я пытаюсь сделать, так это дождаться появления дочернего процесса, а затем продолжить выполнение моего сценария.
Единственный способ, который я нашел, - это использовать psutil и опрос, пока у процесса не появятся дети.
process = psutil.Process(subprocess.Popen(command).pid)
while 0 == len(process.children()):
time.sleep(0.2)
Есть ли лучший способ сделать это, чем опрос детей? Может, ждете какого-то события?
Я использую для этого Windows 10.
JOB_OBJECT_MSG_NEW_PROCESS
в порт завершения, который будет содержать PID дочернего процесса. Прародительский процесс ожидает этого сообщения черезGetQueuedCompletionStatus
. - person Eryk Sun   schedule 26.07.2017