使用python我可以轻松地提高当前流程的优点:
>>> import os
>>> import psutil
>>> # Use os to increase by 3
>>> os.nice(3)
3
>>> # Use psutil to set to 10
>>> psutil.Process(os.getpid()).nice(10)
>>> psutil.Process(os.getpid()).nice()
10
但是,似乎不允许降低流程的优点:
>>> os.nice(-1)
OSError: [Errno 1] Operation not permitted
>>> psutil.Process(os.getpid()).nice(5)
psutil.AccessDenied: psutil.AccessDenied (pid=14955)
这样做的正确方法是什么?棘轮机制是一个错误还是一个功能?
答案 0 :(得分:7)
root用户可以提高进程的优先级,但以root身份运行会产生其他后果。
答案 1 :(得分:3)
这不是Python或os.nice
接口的限制。在man 2 nice
中描述了只有超级用户可能会降低进程的优点:
nice()将inc添加到调用进程的nice值。 (更高 nice值表示低优先级。)只有超级用户可以指定a 负增量或优先级增加。好的值的范围是 在getpriority(2)中描述。
答案 2 :(得分:0)
我遇到了相同的错误[Errno 2] Operation not permitted
。
我不想使用sudo启动脚本,所以出现了以下解决方法:
def decrease_nice():
pid = os.getpid()
os.system("sudo renice -n -19 -p " + str(pid))
def normal_nice():
pid = os.getpid()
os.system("sudo renice -n 0 -p " + str(pid))