【问题标题】:How to reduce CPU usage in Windows?如何减少 Windows 中的 CPU 使用率?
【发布时间】:2016-01-07 14:08:31
【问题描述】:

如果我使用

import os
os.nice(10)

错误是

AttributeError: 'module' object has no attribute 'nice'

nice 可能只适用于 Linux 系统, 那么如何减少程序可用的 CPU 资源呢?

它检查一个特定的进程是否正在运行,如果没有,则执行它。

我的代码如下所示:

import subprocess, psutil

proc = subprocess.Popen(['flux'])
pid = proc.pid
while 1:
    if not psutil.pid_exists(pid):
        proc = subprocess.Popen(['flux'])
        pid = proc.pid

我希望它使用尽可能少的资源。

【问题讨论】:

  • 在无限循环中你可以 time.sleep()
  • 或者调用proc.wait而不是不断检查PID。
  • @ColonelThirtyTwo 你能举个例子吗?

标签: python resources nice


【解决方案1】:

你在忙着等待;该循环将尽可能快地执行。 Nice'ing 过程(即使该 API 存在于 Windows 上)也无济于事。如果其他进程想要使用 CPU,它只会让其他进程先运行,但您的程序仍然会占用所有剩余的周期。

解决这个问题的一个简单方法是在检查之间睡一会儿:

import time

...

while 1:
    time.sleep(1)
    if not psutil.pid_exists(pid):
        proc = subprocess.Popen(['flux'])
        pid = proc.pid

但更好的方法是阻塞直到程序完成。你可以这样做:

import subprocess

while True:
    subprocess.call(['flux'])

由于subprocess.call 阻塞直到进程退出,您的代码在此期间不会花费任何周期。

【讨论】:

    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多