如果我使用
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
我希望使用尽可能少的资源。
答案 0 :(得分:3)
你忙着;该循环将尽可能快地执行。不错的过程(即使在Windows上存在该API)也无济于事。如果他们想要使用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
会阻止进程退出,因此您的代码在此期间不会花费任何周期。