运行2个python脚本而不会相互影响

时间:2015-08-20 11:57:15

标签: python selenium subprocess

我有2个python脚本我试图并排运行。但是,它们中的每一个都必须彼此独立地打开和关闭并重新打开。此外,其中一个脚本在shell脚本中运行。

Flaskserver.py & ./pyinit.sh

Flaskserver.py只是一个烧瓶服务器,需要每次都重新启动并再次加载新页面。 (不能将所有页面定义为html可互换)。 pyinit以xinit ./pyinit.sh(其selenium-webdriver pythoncode)运行

因此,当Flaskserver更改并重新启动时,./ pyinit需要等待大约20秒,然后重新启动。

其中任何一个都可以创建错误,所以我需要能够在重新启动之前检查Flaskserver是否有错误./pyinit如果./pyinit错误我需要将Flaskserver设置为默认值然后重新启动它们。

我对子流程了解不多,但我不确定它如何处理错误和停止启动代码。

1 个答案:

答案 0 :(得分:1)

我建议您使用multithread为流程创建不同的线程,而不是使用子流程。

如果全局变量发生冲突,多线程不会解决问题,但是通过在不同的脚本中运行它们,而你可能会解决这个问题,你可能会碰撞像日志文件这样的东西。

现在,如果您保持两个进程都从一个单独的进程运行,该进程负责将它们分开并在必要时分配不同的全局变量,那么您应该能够保持更好的控制。使用多线程库中的连接和锁定之类的东西,也可以确保它们不会发生冲突,并且在另一个进程运行时应该很容易让进程进入休眠状态(等待20秒)。

您可以将线程列表保存为全局变量以及锁定。例如,我已经使用CherryPy的服务器成功完成了这项工作。关于多线程的任何更多细节都会查看我上面提到的问题,这是非常好的解释。