我有一个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,一切都是正常的。
发布于 2018-08-04 15:41:46
您应该使用.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()发布于 2018-08-04 15:39:33
问题来自代码的这一部分
while time.time() - now < WAIT:
passpython花费了所有的CPU时间来尽可能快地执行这个循环(因此可能是每秒百万次)。
在继续循环之前,您需要让进程a休眠。
while time.time() - now < WAIT:
time.sleep(1)这样,进程将休眠1秒,并再次执行循环,因此CPU将处于空闲状态。如果你想睡眠700秒,你可以把1改成10,20,甚至WAIT。
https://stackoverflow.com/questions/51683493
复制相似问题