Python | os.getpriority 函数
Lasted 2020-12-07 12:31:13
os.getpriority 函数获取程序调度优先级。which 参数值可以是 PRIO_PROCESS,PRIO_PGRP,或 PRIO_USER 中的一个,who 是相对于 which (PRIO_PROCESS 的进程标识符,PRIO_PGRP 的进程组标识符和 PRIO_USER 的用户ID)。当 who 为 0 时(分别)表示调用的进程,调用进程的进程组或调用进程所属的真实用户 ID。
在 Linux 中,使用 ps -l 或 top 命令可以查看进程的优先级。优先级范围一般从 -20 到 19,-20 表示调度优先级最高,19 表示优先级最低。默认优先级一般为 0。可通过 nice 命令查看。
函数定义
os.getpriority(which, who)
# 函数定义
if sys.platform != 'win32':
# Unix only
...
def getpriority(which: int, who: int) -> int: ...
...
兼容性:Unix 系统。
参数
- checkwhich - which 参数值。
- os.PRIO_PROCESS=0 进程标识符。
- os.PRIO_PGRP=1 进程组标识符。
- os.PRIO_USER=2 用户ID。
- checkwho - 跟 which 值对应。
返回值
- checkint - 优先级。
示例1: - 使用 os.getpriority() 函数获取进程优先级。
# coding=utf-8
# Python3 代码
# 讲解怎样使用 os.getpriority() 函数获取进程优先级
# 引入 os 库
import os
# 根据进程ID查看优先级
which = os.PRIO_PROCESS
who = os.getpid()
# 获取优先级
prio = os.getpriority(which, who)
print("Process priority::", prio)
Process priority:: 0
示例2: - 获取和设置进程优先级。
# coding=utf-8
def test_set_get_priority(self):
base = os.getpriority(os.PRIO_PROCESS, os.getpid())
os.setpriority(os.PRIO_PROCESS, os.getpid(), base + 1)
try:
new_prio = os.getpriority(os.PRIO_PROCESS, os.getpid())
if base >= 19 and new_prio <= 19:
raise unittest.SkipTest(
"unable to reliably test setpriority at current nice level of %s" % base)
else:
self.assertEqual(new_prio, base + 1)
finally:
try:
os.setpriority(os.PRIO_PROCESS, os.getpid(), base)
except OSError as err:
if err.errno != errno.EACCES:
raise