當(dāng)前位置:
首頁 >
Python 用一个脚本来控制另一个脚本的运行、关闭
發(fā)布時(shí)間:2024/3/13
43
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Python 用一个脚本来控制另一个脚本的运行、关闭
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、一開始按照網(wǎng)上教程,使用subprocess來實(shí)現(xiàn)另外一個(gè)腳本的運(yùn)行和關(guān)閉,但是這個(gè)腳本在連續(xù)運(yùn)行的時(shí)候不容易返回?cái)?shù)據(jù),判斷腳本運(yùn)行的狀態(tài)
2、使用笨方法,用os.system運(yùn)行腳本,使用os.kill(pid)殺死進(jìn)程的方法關(guān)閉腳本的運(yùn)行,這樣就可以實(shí)現(xiàn)在一個(gè)腳本里面控制其他腳本的開啟和運(yùn)行了。當(dāng)前這個(gè)方法在linux系統(tǒng),如ubuntu18.04中跑,不存在問題
代碼樣例:
需要運(yùn)行的腳本---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+=1print(count,now_time)time.sleep(1)寫的控制運(yùn)行腳本的腳本代碼---control.py
import os,signal import timedef get_now_time():# 獲取當(dāng)前的本地時(shí)間now_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))return now_timedef 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的進(jìn)程, 返回值是:%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 '另外判斷殺死進(jìn)行所在的路徑' in line:pid = int(line.split()[1])kill(pid) # 建議在運(yùn)行命令后面加上&符號(hào),似乎是以另一個(gè)線程跑 os.system('python ./run.py &') while True:# 關(guān)閉if some_condition:print('暫停')kill_target('run.py')# 打開if some_else_condition:os.system('python ./run.py &')?
總結(jié)
以上是生活随笔為你收集整理的Python 用一个脚本来控制另一个脚本的运行、关闭的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql多字段修改update_MyS
- 下一篇: python列表索引超出范围 等于啥_P