我的9行Python代码占用了我100%的CPU

时间:2018-08-04 07:31:06

标签: python cpu-usage

我有一个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,则一切正常。

2 个答案:

答案 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