如果我使用
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/