我有一个python脚本(test.py),需要使用以下代码每10到15分钟重新启动一次:
import subprocess,time
WAIT=700
file_name = ("test.py")
while True:
process=subprocess.Popen("python "+ file_name)
now=time.time()
while time.time() - now < WAIT:
pass
process.kill()
但是占用了我100%的CPU。有什么问题吗?如果我运行test.py,则一切正常。
答案 0 :(得分:2)
您应该使用.sleep
函数,该函数不会使用CPU密集的while循环:
import subprocess,time
WAIT=700
file_name = ("test.py")
while True:
process=subprocess.Popen("python "+ file_name)
time.sleep(WAIT)
process.kill()
答案 1 :(得分:0)
问题出在这部分代码
while time.time() - now < WAIT:
pass
python花费了所有CPU时间来执行此循环,速度达到了CPU允许的速度(每秒可能花费一百万次)。
在继续循环之前,您需要先休眠一个过程
while time.time() - now < WAIT:
time.sleep(1)
这样,进程将休眠1秒,然后再次执行循环,因此CPU将处于空闲状态。如果您想睡700秒,可以将1更改为10、20甚至是WAIT
。