相对简单的Python脚本占用100% CPU

4 投票
5 回答
30522 浏览
提问于 2025-04-16 08:34

我不打算提供代码,因为太长了。这个Python脚本涉及在一个循环中执行很多命令。

基本结构

while True:
    The meat goes here
    with the odd if:
        and stuff

现在我完成了这个脚本,发现运行时CPU使用率达到了100%,没有任何异常。我是个初学者,不太知道这个问题该归因于什么。我想可能是因为这个脚本会无限运行(直到我手动退出),所以如果它每秒重复循环很多次,可能会对CPU造成压力。我在循环的底部加了time.sleep(1),想看看这是否是问题所在,但没有改善。

有没有人有什么想法?这个过程比较长,但它们很依赖一个不太常触发的if语句。CPU使用率100%发生在那个if语句被触发之前,所以我真的很困惑。

编辑:忘了提一下,它是在一个Unix环境(Debian)下运行的。

5 个回答

3

100%的CPU使用率说明这个脚本运行得很好。我觉得没有什么问题。如果这个脚本影响了其他程序的运行,可以把它的优先级调低一点(使用nice命令)。

4

问题在于,你的循环里没有设置休眠语句,只有在条件成立时才会执行,所以你的代码在以极快的速度循环,这样会消耗大量的处理器资源。

你只需要在代码里加一行休眠,设置为0.1秒就可以了。

time.sleep(0.1)
12

除非有一些事情阻碍了CPU的使用(比如在等硬盘读写或者网络传输,或者程序因为休眠而暂停执行),否则当一个程序在运行时,CPU的使用率通常会保持在接近100%。

如果你不想让CPU一直使用100%的资源,而只是想反复检查某个条件,可以在你的循环里加上一个time.sleep(秒数)的命令,这样就能让CPU有时间休息一下。

撰写回答