2009-05-28 2 views
0

Я разрабатываю скрипт, который снова и снова запускает программу с другими скриптами для тестирования.Переменные среды Python в Windows?

Как это работает, у меня есть один скрипт Python, который я запускаю. Этот скрипт вызывает программу и загружает другие скрипты. Он убивает программу через 60 секунд, чтобы снова запустить программу со следующим скриптом.

Для некоторых скриптов 60 секунд слишком длинны, поэтому мне было интересно, могу ли я установить переменную FLAG (не в главном скрипте), например, когда скрипт заканчивается, он устанавливает FLAG, поэтому основной скрипт и читать FLAG и убить процесс?

Спасибо за помощь, мое письмо может быть запутанным, поэтому, пожалуйста, дайте мне знать, если вы не можете полностью понять.

+1

Почему вы не запускаете их как подпроцессы и не используете метод subprocess.Popen wait(), чтобы дождаться их завершения? –

+0

Это не сработает, потому что процесс никогда не заканчивается. Мой сценарий делает это (псевдокод) ./Program.exe /home/user/Desktop/Script1.py Таким образом, в конечном счете заканчивается Script1.py, но Program.exe никогда не заканчивается ... Так подпроцесс .Popen wait() не работает, я не думаю. – hahuang65

+0

Позвольте мне понять это прямо. mainscript.py выполняет program.exe, который, в свою очередь, запускает script1.py. program.exe не заканчивается, но в конце концов скрипт1.py. Вы ищете способ обнаружения, когда script1.py заканчивается? Обычно сценарий1.py заканчивается или иногда выдается ошибка? – Paul

ответ

1

Вы можете использовать atexit, чтобы написать небольшой файл (flag.txt), когда script1.py завершает работу. mainscript.py может регулярно проверять наличие файла flag.txt, и когда он его найдет, он убьет program.exe и выйдет.

Редактировать: Я установил постоянные переменные среды, используя this, но я использую его только для сценариев установки на основе python. Обычно я очень стесняюсь возиться с реестром. (это для окон btw)

+0

Я нашел способ установить переменную окружения, но похоже, что он не является постоянным ... как только Script1.py заканчивается, переменная удаляется. Поэтому я могу закончить это, если все остальное не работает ... – hahuang65

+0

Если вы хотите, чтобы переменная окружения была постоянной, вы должны фактически войти в реестр. Но я действительно не рекомендую этот подход для установки флагов в виде IPC. –

0

Это похоже на идеальный вариант использования для сокетов, в частности asyncore.

+0

Спасибо, не на работе, но я попробую это завтра :) – hahuang65

0

Вы не можете использовать переменные среды таким образом. Как вы обнаружили, он не является постоянным после завершения установки приложения

Смежные вопросы