【问题标题】:Python Environment Variables in Windows?Windows中的Python环境变量?
【发布时间】:2009-05-28 22:48:17
【问题描述】:

为了测试目的,我正在开发一个脚本,该脚本会反复运行与其他脚本一起运行的程序。

它目前的工作方式是我有一个我启动的 Python 脚本。该脚本调用程序并加载其他脚本。它会在 60 秒后终止程序,以便使用下一个脚本再次启动程序。

对于某些脚本,60 秒太长了,所以我想知道是否可以设置一个 FLAG 变量(不在主脚本中),这样当脚本完成时,它会设置 FLAG,所以主脚本和读取FLAG并终止进程?

感谢您的帮助,我的文字可能令人困惑,所以如果您不能完全理解,请告诉我。

【问题讨论】:

  • 为什么不将它们作为子进程启动并使用 subprocess.Popen 的 wait() 方法等待它们完成?
  • 那行不通,因为该过程永远不会完成。我的脚本执行此操作(伪代码)./Program.exe /home/user/Desktop/Scr​​ipt1.py 所以 Script1.py 最终完成,但 Program.exe 从未真正完成......所以 subprocess.Popen wait() 不会我觉得不行。
  • 让我直说。 mainscript.py 执行 program.exe,然后启动 script1.py。 program.exe 不会结束,但 script1.py 最终会结束。您正在寻找一种方法来检测 script1.py 何时结束? script1.py 是否每次都正常结束或有时会出错?
  • 所以基本上,从script1.py一直到script50.py都有。每个都是不同的,它们可能会崩溃,所以如果进程停止,我还需要一种方法来终止进程(但这是一个不同的问题)。

标签: python windows testing environment-variables


【解决方案1】:

您可以在 script1.py 退出时使用atexit 写入一个小文件(flag.txt)。 mainscript.py 可以定期检查 flag.txt 的存在,当它找到它时,会杀死 program.exe 并退出。

编辑: 我已经使用this 设置了持久环境变量,但我只将它用于基于 python 的安装脚本。通常我对弄乱注册表很害羞。 (这是针对 Windows 的)

【讨论】:

  • 我找到了一种设置环境变量的方法,但它看起来不是持久的......一旦 Script1.py 完成,该变量就会被删除。所以如果一切都失败了,我可能最终会这样做......
  • 如果要将环境变量设置为持久化,则必须实际进入注册表。但我真的不推荐这种方法在 IPC 中设置标志。
【解决方案2】:

这似乎是套接字的完美用例,尤其是asyncore。

【讨论】:

    【解决方案3】:

    您不能以这种方式使用环境变量。如您所见,设置应用程序完成后它不会持久

    【讨论】:

      猜你喜欢
      • 2014-09-30
      • 2013-08-04
      • 2010-10-17
      • 2014-07-21
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      相关资源
      最近更新 更多