python - 如何减少Windows中的CPU使用率?

标签 python resources nice

如果我使用

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

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

最佳答案

忙着等待;该循环将尽可能快地执行。优化该进程(即使该 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阻塞直到进程退出,您的代码在此期间不会花费任何周期。

关于python - 如何减少Windows中的CPU使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33041432/

相关文章:

python - 如何为 scipy.ndimage.label 的特征指定周期连接?

python - Pandas 数据框中两个字符串列表之间的一对一映射

android - 如何本地化android系统字符串资源?

.htaccess - htaccess 和漂亮的 url

python - 在python中拟合多元curve_fit

python - 自动编码器最后一层的 Keras 尺寸不匹配

linux - 狂欢 : how to use a function (which is a string param) in an other function

linux - 在什么情况下 "nice"命令的返回值为33?

java - 一种实现加载大量资源的共享类的优雅方法(在 Java 中)

c# - 如何使用C#创建DataTemplate并设置子控件的资源?