【问题标题】:Wasting cpu cycles with python用python浪费cpu周期
【发布时间】:2016-12-09 11:37:30
【问题描述】:

我正在尝试创建一个简单的应用程序,该应用程序会浪费 CPU 周期进行多核研究。我创建的那个占用了 100% 的核心使用率。我希望它在 30% 60% 70% 左右,我应该进行哪些调整才能实现这一目标?提前致谢。

当前版本:

a=999999999
while True:
   a=a/2

【问题讨论】:

  • 这不是答案,但也许应该:不要为此使用 Python
  • import time; while 1: time.sleep(n) 适合n 的大小。
  • @mozcelikors 你可能想参考这个链接xmodulo.com/run-program-process-specific-cpu-cores-linux.html
  • @TigerhawkT3 这本身似乎是一个有效的答案。考虑到n 是“秒”,可以是浮点数。
  • @TigerhawkT3 如果你想回答这个问题,我可以接受。效果很好。只是寻找正确的'n'的挑战。所以,谢谢。

标签: python linux cpu cpu-usage


【解决方案1】:

没有必要从一个大数字开始,因为一个数字除以 2 很快就会一遍又一遍地以 0/2 结束。此外,您不必在循环中实际执行任何操作来消耗 CPU 周期 - 仅循环的操作就足够了。这就是为什么任何无限循环,即使是像while 1: pass 这样简单的东西,都会吃掉整个 CPU 内核直到被杀死。为避免占用整个内核,请使用time.sleep 将线程的执行暂停一段时间。此函数采用一个参数表示线程休眠的时间(以秒为单位)。它接受一个浮点数。

import time
while 1:
    time.sleep(0.0001)

只需为您要测试的每个内核运行此脚本的一个实例(为您要放在特定系统上的工作负载设置适当的睡眠时间)。

请注意,某些操作系统可能不支持小于 1 毫秒的睡眠时间,从而导致较短的睡眠时间为零,从而使其与此策略不兼容。请参阅Python: high precision time.sleepHow accurate is python's time.sleep()? 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 2011-09-27
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多