我知道os.nice(20)
设置了linux上的最高级别。
但我不知道其他unix的价值(我不关心MS-Win)。
我可以在python中使用最大nice值的某个符号值吗?
首选解决方案:
os.nice(NICE_MAX)
我试图在这里找到解决方案:
dir(os)
grep -i nice /usr/lib64/python/os*.py
答案 0 :(得分:2)
我认为最接近我们得到的标准来自POSIX(IEEE 1003)。那里的实际规范确实将范围留给了实现,但注意到:
如果值+ {NZERO}小于系统支持的最低值 value,setpriority()应将nice值设置为支持的最低值 值;如果值+ {NZERO}大于系统支持的最高值 nice值,setpriority()应将nice值设置为最高值 支持的价值。
因此,如果你只想要最高的好处,你可以传递它INT_MAX
,但是在Python中不容易找到这个值。 NZERO
确实提供了界限,但同样很难找到(它在limits.h
中定义)。
然而,Python os.nice
的行为并不像setpriority
- 它增加了过程的好处,并且还返回了最终的好处。因此,如果你想要做的就是设置最高的好处,你可以运行一个while循环,直到os.nice(N)
返回相同的值两次,因为N是任何适合ctypes.c_int
的正值(任何整数)从1到32767保证适合)。
答案 1 :(得分:0)
来自getpriority(2)注释:
实际优先级范围因内核版本而异。 Linux的 在1.3.36之前有-infinity..15。从内核1.3.43开始,Linux就有了 范围-20..19。在内核中,实际上是很好的值 使用相应的范围40..1表示(因为负数 数字是错误代码),这些是使用的值 setpriority()和getpriority()系统调用。 glibc包装器 这些系统调用的函数处理之间的转换 用户土地和内核表示的好价值根据 公式unice = 20 - knice。