Python 停止子流程多次启动流程

Python 停止子流程多次启动流程,python,subprocess,Python,Subprocess,我有一个类似蟒蛇的问题: 假设我正在使用python中的子进程库从终端运行程序。我需要在循环中调用子流程。 我怎样才能: 1如果子进程已经启动,我将停止它启动程序。或 2如何确定程序是否仍在运行,以便不启动新的子流程?您可以使用检查流程是否正在运行。如果进程当前正在运行,它将返回None。否则,它将返回子进程的退出代码。例如: import subprocess import time p = None while True: if p and p.poll() is None:

我有一个类似蟒蛇的问题: 假设我正在使用python中的子进程库从终端运行程序。我需要在循环中调用子流程。 我怎样才能: 1如果子进程已经启动,我将停止它启动程序。或
2如何确定程序是否仍在运行,以便不启动新的子流程?

您可以使用检查流程是否正在运行。如果进程当前正在运行,它将返回None。否则,它将返回子进程的退出代码。例如:

import subprocess
import time

p = None
while True:
   if p and p.poll() is None:
       print("Process is currently running. Do nothing.")
   else:  # No process running
       if p:  # We've run the process at least once already, so get the result.
           ret = p.returncode
           print("Last run returned {}".format(ret))
       p = subprocess.Popen(["some_command", "some arg"])
   time.sleep(3)  # Wait a few seconds before iterating again.

您是否只关心由Python脚本启动的子进程的实例?在进入循环的下一个迭代之前,您是否可以等待子流程完成?有时,我需要在它停止之前捕获它。还有一些时候我想等到它结束再重复。