赞
踩
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 &')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。