使用100%cpu的相对简单的Python脚本

时间:2010-12-15 12:38:38

标签: python unix cpu-usage

我不会提供代码,因为它太长了。 python脚本涉及执行在while循环中运行的大量命令。

基本结构

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

现在我已经完成了,我注意到在运行它时,它使用100%CPU,没有例外。我是初学者,并不知道将这个问题归结为什么。我想也许是因为脚本无限期地运行(直到我手动退出),如果它重复循环一次,可能只会对CPU造成负担。我在while的底部添加了time.sleep(1)以查看是否存在没有改进的问题。

有人有什么想法吗?这是一个相当长的事件序列,但它们严重依赖于if语句,而这种语句并不是经常触发的。

之前,100%的CPU使用率发生在特定的if语句之前,所以我真的处于亏损状态。

编辑:忘了包含它在unix环境(Debian)中运行

5 个答案:

答案 0 :(得分:8)

除非存在妨碍使用CPU的方式(例如,等待磁盘IO或网络IO,或通过休眠暂停执行),否则在程序运行时CPU使用率将始终保持在100%左右。

如果你不希望它一直使用100%的CPU,如果它只是一遍又一遍地检查某个条件,你可能想要在你的循环中添加time.sleep(numberOfSeconds)。

答案 1 :(得分:3)

100%CPU意味着脚本运行良好。我没有看到任何问题。如果它阻止其他程序运行良好,请在较低优先级(不错)下运行脚本

答案 2 :(得分:2)

问题是为什么使用100%。这是你写的任何东西的默认值。为了不使用100%,你需要有特定的代码,等待发生的事情。如果你有,那么错误就在那段代码中。

答案 3 :(得分:1)

也许break循环中有continuewhile,因此您的time.sleep(1)代码会被跳过。您确定time.sleep(1)部分正在执行吗?

答案 4 :(得分:0)

问题在于,除非if函数为true,否则循环中没有sleep语句,因此您的代码以荒谬的速度循环,占用了大量处理器速度。

您需要做的就是添加一个带有0.1的睡眠线。

time.sleep(0.1)