2

如果我使用

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

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

4

1 回答 1

3

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

于 2015-10-09T15:00:34.770 回答