在运行python脚本之前,我需要检查外部程序是否正在运行,并等待其完成。
我有几篇文章,但是在将所有内容整合成一个有凝聚力的脚本时遇到了一些困难。
我可以使用以下代码获取程序的PID和一个while循环,该循环将在10秒内超时
from subprocess import check_output
import time
def get_pid(name):
return check_output(["pidof",name])
print "%s" % get_pid("java")
timeout = time.time() + 10
test = 0
while True:
if time.time() > timeout:
print "exception goes here"
break
test = test + 1
time.sleep(1)
如果程序未运行,则get_pid将失败,我认为在这种情况下我需要捕获异常?这是我不确定要去哪里。也许有更好的方法来解决这个问题?
==============
这是一个似乎正常运行的更新。
from subprocess import check_output, CalledProcessError
import time
def get_pid(name):
try:
process_status = check_output(["pidof",name])
except CalledProcessError as e:
process_status = None
return process_status
timeout = time.time() + 10
program = "java"
while get_pid(program) != None:
time.sleep(1)
print "1 second loop"
if time.time() > timeout:
raise ValueError ('Timeout exceeded')
print "%s is not running" % program
答案 0 :(得分:0)
异常处理可以在引发异常的地方进行。因此,如果check_output抛出异常,则可以按以下方式处理
def get_pid(name):
pid_ = None
try:
pid_ = check_output(["pidof",name])
except:
pass
return pid_
#logic to wait for pid_ to finish if found