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

标签 python selenium subprocess

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

Flaskserver.py & ./pyinit.sh

Flaskserver.py 只是一个 Flask 服务器,需要时不时地重新启动才能加载新页面。 (不能定义所有页面,因为 html 是可以互换的)。 pyinit 作为 xinit ./pyinit.sh (其 selenium-webdriver pythoncode)运行

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

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

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

最佳答案

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

如果全局变量发生冲突,多线程将无法解决问题,但是通过在不同的脚本中运行它们,虽然可以解决这个问题,但可能会在日志文件等其他内容中发生冲突。

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

您可以将线程列表以及您的锁保留为全局变量。例如,我已经使用 CherryPy 的服务器成功完成了此操作。有关多线程的更多详细信息请查看我上面链接的问题,它的解释非常好。

关于python - 运行 2 个 python 脚本而不互相影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32117644/

相关文章:

python - 在Python中正确终止线程

python - 使用 Spark-DataFrame 将 HDFS 保存到 MongoDB

python - 名称错误 : name 'drive_service' is not defined Google API

python-3.x - 执行 popen 并超时

python - 如何在 sympy 中正确渲染大括号?

python - 在 headless 模式下运行 Firefox 的正确方法(Selenium、Python)

node.js - Nightwatch JS - 如何通过 Firefox headless 运行测试

java - RunnerClass 找不到步骤?

python - 使用子进程时如何限制程序的执行时间?

python - 从标准输入管道输入时 ffmpeg 损坏