Максимальное приятное значение для os.nice()

Я знаю это os.nice(20) устанавливает максимальный хороший уровень в Linux.

Но я не знаю ценность других юниксов (меня не волнует MS-Win).

Есть ли где-нибудь символическое значение для максимального приятного значения, которое я могу использовать из python?

Предпочитаемое решение:

os.nice(NICE_MAX)

Я попытался найти решение здесь:

2 ответа

Я думаю, что наиболее близким к стандарту, который мы здесь получаем, является POSIX (IEEE 1003). Фактическая спецификация там оставляет диапазон для реализации, но отмечает:

Если значение +{NZERO} меньше самого низкого поддерживаемого значения nice системы, setpriority() должно установить для nice значение наименьшего поддерживаемого значения; если значение +{NZERO} больше, чем максимальное поддерживаемое значение системы, поддерживаемое системой, setpriority() должно установить для параметра nice самое высокое поддерживаемое значение.

Таким образом, если вы просто хотите высочайшую милость, вы можете пройти ее INT_MAX, но это значение не так легко найти в Python. NZERO действительно предоставляет границы, но также трудно найти (это определено в limits.h).

Тем не менее, Python os.nice не ведет себя как setpriority - это увеличивает приятность процесса, а также возвращает результативность. Так что, если все, что вы хотите сделать, это установить самую высокую милость, вы можете просто запустить цикл while, пока os.nice(N) возвращает одно и то же значение дважды, поскольку N - это любое положительное значение, которое вписывается в ctypes.c_int (любое целое число от 1 до 32767 будет соответствовать).

Из getpriority(2) отмечает:

Фактический диапазон приоритетов зависит от версии ядра. Linux до 1.3.36 имел -infinity..15. Начиная с ядра 1.3.43, Linux имеет диапазон -20..19. Внутри ядра хорошие значения фактически представлены с использованием соответствующего диапазона 40..1 (поскольку отрицательные числа являются кодами ошибок), и это значения, используемые системными вызовами setpriority() и getpriority(). Функции-обёртки glibc для этих системных вызовов обрабатывают переводы между представлением user-land и ядром значения nice согласно формуле unice = 20 - knice.

Другие вопросы по тегам