1、一开始按照网上教程,使用subprocess来实现另外一个脚本的运行和关闭,但是这个脚本在连续运行的时候不容易返回数据,判断脚本运行的状态
2、使用笨方法,用os.system运行脚本,使用os.kill(pid)杀死进程的方法关闭脚本的运行,这样就可以实现在一个脚本里面控制其他脚本的开启和运行了。当前这个方法在linux系统,如ubuntu18.04中跑,不存在问题
代码样例:
需要运行的脚本---run.py
import time
count=0
con=True
while con:
now time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
count+=1
print(count,now_time)
time.sleep(1)
写的控制运行脚本的脚本代码---control.py
import os,signal
import time
def get_now_time():
# 获取当前的本地时间
now_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
return now_time
def kill(pid):
print('pid',pid)
# pgid=os.getpgid(pid)
# print(pgid)
# a = os.killpg(pgid,signal.SIGKILL)
a = os.kill(pid,signal.SIGKILL)
print('已杀死pid为%s的进程, 返回值是:%s' % (pid, a))
def kill_target(target):
cmd_run="ps aux | grep {}".format(target)
out=os.popen(cmd_run).read()
for line in out.splitlines():
print(line)
if '另外判断杀死进行所在的路径' in line:
pid = int(line.split()[1])
kill(pid)
# 建议在运行命令后面加上&符号,似乎是以另一个线程跑
os.system('python ./run.py &')
while True:
# 关闭
if some_condition:
print('暂停')
kill_target('run.py')
# 打开
if some_else_condition:
os.system('python ./run.py &')