我有2个python脚本我试图并排运行。但是,它们中的每一个都必须彼此独立地打开和关闭并重新打开。此外,其中一个脚本在shell脚本中运行。
Flaskserver.py & ./pyinit.sh
Flaskserver.py只是一个烧瓶服务器,需要每次都重新启动并再次加载新页面。 (不能将所有页面定义为html可互换)。 pyinit以xinit ./pyinit.sh(其selenium-webdriver pythoncode)运行
因此,当Flaskserver更改并重新启动时,./ pyinit需要等待大约20秒,然后重新启动。
其中任何一个都可以创建错误,所以我需要能够在重新启动之前检查Flaskserver是否有错误./pyinit如果./pyinit错误我需要将Flaskserver设置为默认值然后重新启动它们。
我对子流程了解不多,但我不确定它如何处理错误和停止启动代码。
答案 0 :(得分:1)
我建议您使用multithread为流程创建不同的线程,而不是使用子流程。
如果全局变量发生冲突,多线程不会解决问题,但是通过在不同的脚本中运行它们,而你可能会解决这个问题,你可能会碰撞像日志文件这样的东西。
现在,如果您保持两个进程都从一个单独的进程运行,该进程负责将它们分开并在必要时分配不同的全局变量,那么您应该能够保持更好的控制。使用多线程库中的连接和锁定之类的东西,也可以确保它们不会发生冲突,并且在另一个进程运行时应该很容易让进程进入休眠状态(等待20秒)。
您可以将线程列表保存为全局变量以及锁定。例如,我已经使用CherryPy的服务器成功完成了这项工作。关于多线程的任何更多细节都会查看我上面提到的问题,这是非常好的解释。