当前位置:   article > 正文

Python 用一个脚本来控制另一个脚本的运行、关闭_一个python脚本控制另一个脚本自动重启运行

一个python脚本控制另一个脚本自动重启运行

1、一开始按照网上教程,使用subprocess来实现另外一个脚本的运行和关闭,但是这个脚本在连续运行的时候不容易返回数据,判断脚本运行的状态

2、使用笨方法,用os.system运行脚本,使用os.kill(pid)杀死进程的方法关闭脚本的运行,这样就可以实现在一个脚本里面控制其他脚本的开启和运行了。当前这个方法在linux系统,如ubuntu18.04中跑,不存在问题

代码样例:

需要运行的脚本---run.py

  1. import time
  2. count=0
  3. con=True
  4. while con:
  5. now time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
  6. count+=1
  7. print(count,now_time)
  8. time.sleep(1)

写的控制运行脚本的脚本代码---control.py

  1. import os,signal
  2. import time
  3. def get_now_time():
  4. # 获取当前的本地时间
  5. now_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
  6. return now_time
  7. def kill(pid):
  8. print('pid',pid)
  9. # pgid=os.getpgid(pid)
  10. # print(pgid)
  11. # a = os.killpg(pgid,signal.SIGKILL)
  12. a = os.kill(pid,signal.SIGKILL)
  13. print('已杀死pid为%s的进程, 返回值是:%s' % (pid, a))
  14. def kill_target(target):
  15. cmd_run="ps aux | grep {}".format(target)
  16. out=os.popen(cmd_run).read()
  17. for line in out.splitlines():
  18. print(line)
  19. if '另外判断杀死进行所在的路径' in line:
  20. pid = int(line.split()[1])
  21. kill(pid)
  22. # 建议在运行命令后面加上&符号,似乎是以另一个线程跑
  23. os.system('python ./run.py &')
  24. while True:
  25. # 关闭
  26. if some_condition:
  27. print('暂停')
  28. kill_target('run.py')
  29. # 打开
  30. if some_else_condition:
  31. os.system('python ./run.py &')

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/75528
推荐阅读
相关标签
  

闽ICP备14008679号