如何在 Windows 中减少 CPU 的使用?
How to reduce CPU usage in Windows?
如果我用
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
阻塞直到进程退出,您的代码在此期间不会花费任何周期。
如果我用
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
阻塞直到进程退出,您的代码在此期间不会花费任何周期。