Python | os.getpriority 函數
最近更新時間 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