Сообщить об ошибке.

Использование ресурсов ОС, модуль resource в Python

Получение информации об использовании ресурсов

В материале представлены константы и функции модуля resource, которые используются для получения информации об использовании ресурсов используемой оперативной системы.

Содержание:


resource.getrusage(who):

Функция resource.getrusage() возвращает объект, описывающий ресурсы, потребляемые либо текущим процессом, либо его дочерними процессами, как указано в аргументе who.

Аргумент who должен быть указан с использованием одной из констант resource.RUSAGE_*, описанных ниже.

Простой пример:

from resource import *
import time

# задача, не связанная с процессором
time.sleep(3)
print(getrusage(RUSAGE_SELF))

# задача, связанная с процессором
for i in range(10 ** 8):
   _ = 1 + 1

print(getrusage(RUSAGE_SELF))

Каждое из полей возвращаемого значения описывает, как использовался конкретный системный ресурс, например, количество времени, затраченное на работу, это пользовательский режим или количество раз, когда процесс был выгружен из основной памяти. Некоторые значения зависят от внутреннего такта часов, например, объем памяти, который использует процесс.

Для обратной совместимости возвращаемое значение также доступно в виде кортежа из 16 элементов.

Поля ru_utime и ru_stime (значения float) представляют количество времени, затраченное на выполнение в пользовательском режиме, и количество времени, затраченное на выполнение в системном режиме, соответственно. Остальные значения являются целыми числами.

Дополнительно смотрите справочную страницу $ man getrusage, что-бы узнать подробную информацию об этих значениях.

Краткое содержание возвращаемых значений функцией resource.getrusage():

ИндексПолеРесурс
0ru_utime время в пользовательском режиме
1ru_stimeвремя в системном режиме
2ru_maxrssмаксимальный размер резидентной памяти
3ru_ixrssразмер общей памяти
4ru_idrssразмер неразделяемой памяти
5ru_isrssнераспределенный размер стека
6ru_minfltошибки страниц, не требующие ввода/вывода
7ru_majfltошибки страниц, требующие ввода/вывода
8ru_nswapколичество выходов подкачки
9ru_inblockблочные операции ввода
10ru_oublockблочные операции вывода
11ru_msgsndсообщений отправлено
12ru_msgrcvсообщений получено
13ru_nsignalsполученные сигналы
14ru_nvcswдобровольное переключение контекста
15ru_nivcswнепроизвольное переключение контекста

Функция resource.getrusage() вызовет ошибку ValueError, если указан неверный аргумент who. Неверный аргумент who также может вызвать исключение OSError в необычных обстоятельствах.

resource.getpagesize():

Функция resource.getpagesize() возвращает количество байтов системной страницы.

Возвращаемое значение не обязательно должно совпадать с аппаратным размером страницы.

Символьные константы для resource.getrusage().

Чтобы указать, для каких процессов должна быть предоставлена ​​информация в функцию resource.getrusage() необходимо передать следующие символьные константы: resource.RUSAGE_* (описание констант ниже).

resource.RUSAGE_SELF:

Константа resource.RUSAGE_SELF запрашивает ресурсы, потребляемые вызывающим процессом, что представляет собой сумму ресурсов, используемых всеми потоками в процессе.

resource.RUSAGE_CHILDREN:

Константа resource.RUSAGE_CHILDREN запрашивает ресурсы, потребляемые дочерними процессами вызывающего процесса, которые были завершены и ожидали.

resource.RUSAGE_BOTH:

Константа resource.RUSAGE_BOTH запрашивает ресурсы, потребляемые как текущим процессом, так и дочерними процессами. Может быть недоступно во всех системах.

resource.RUSAGE_THREAD:

Константа resource.RUSAGE_THREAD запрашивает ресурсы, потребляемые текущим потоком. Может быть недоступно во всех системах.