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
rss_feed