У меня есть программа, P1
, которую мне нужно запустить около 24 * 20000 раз с разными входами. Проблема в том, что P1
зависает, и я должен принудительно установить его вручную (kill
). Моим первым решением было написание скрипта Python для вызова P1
и передача правильного ввода и получение вывода с использованием popen
и communicate
. Но из-за характера связи, которая ожидает вывода, я не могу убить процесс, пока он ожидает ответа. Я на Windows.
Я попытался использовать функцию multiprocess
, но она только запускает P1
и не смогла отправить входные данные. Я с подозрением отношусь к тому, что я не использую каналы в popen
, и немного попробовал, но, похоже, я не могу получить вывод от P1
.
Есть идеи?
# This code run XLE and pass the intended input to it automatically
def startExe(programPath, programArgStr):
p = subprocess.Popen(programPath,stdout=subprocess.PIPE,stdin=subprocess.PIPE) p.stdin.write(programArgStr)
p.communicate()[0]
# Need to kill the process if it takes longer than it should here
def main(folder):
..
#loop
programArgStr = "create-parser"+path1+";cd "+ path2+"/s"+ command(counter) +";exit"
startExe(path, programArgStr)
..
Как вы можете видеть, может ли P1 успешно завершить заданную задачу, он может выйти сам, используя переданные ему команды выхода!