resource — Информация об использовании ресурсов
Этот модуль предоставляет базовые механизмы для измерения и управления системными ресурсами, используемыми программой.
Символьные константы используются для указания конкретных системных ресурсов и для запроса информации об использовании текущего процесса или его дочерних процессов.
Определена единственная исключительная ситуация для ошибок:
-
exception resource.error -
Описанные ниже функции могут вызвать эту ошибку, если возникает непредвиденное неудачное выполнение системного вызова.
1. Пределы использования ресурсов
Использование ресурсов может быть ограничено с помощью функции setrlimit(), описанной ниже. Каждый ресурс контролируется парой пределов: мягким пределом и жёстким пределом. Мягкий предел — текущий предел, который процесс может изменять со временем. Мягкий предел никогда не может превышать жёсткий предел. Жёсткий предел может быть уменьшен до любого значения, большего, чем мягкий предел, но не увеличен. (Только процессы с эффективным UID суперпользователя могут повысить жёсткий предел.)
Конкретные ресурсы, которые могут быть ограничены, зависят от системы. Они описаны в справке getrlimit(2). Перечисленные ниже ресурсы поддерживаются, когда это поддерживается базовой операционной системой; ресурсы, которые не могут быть проверены или контролируются операционной системой, в этом модуле не определены для этих платформ.
-
resource.RLIM_INFINITY -
Константа, используемая для представления предела неограниченного ресурса.
-
resource.getrlimit(resource) -
Возвращает кортеж
(soft, hard)с текущими мягким и жёстким пределами resource. ВызываетValueError, если указан недопустимый ресурс, илиerror, если системный вызов завершается неудачно.
-
resource.setrlimit(resource, limits) -
Устанавливает новые пределы потребления resource. Аргумент limits должен быть кортежем
(soft, hard)из двух целых чисел, описывающих новые пределы. ЗначениеRLIM_INFINITYможет быть использовано для запроса предела, который не ограничен.Вызывает
ValueError, если указан недопустимый ресурс, если новый мягкий предел превышает жёсткий предел или если процесс пытается повысить свой жёсткий предел. Указание пределаRLIM_INFINITY, когда жёсткий или системный предел для этого ресурса не неограничен, приведёт кValueError. Процесс с эффективным UID суперпользователя может запросить любое допустимое значение предела, включая неограниченное, ноValueErrorпо-прежнему будет вызвано, если запрашиваемый предел превышает системный ограниченный предел.setrlimitтакже может вызватьerror, если системный вызов завершится неудачно.
Эти символы определяют ресурсы, потребление которых может быть контролировано с помощью функций setrlimit() и getrlimit(), описанных ниже. Значения этих символов точно соответствуют константам, используемым программами C.
В справке Unix для getrlimit(2) перечислены доступные ресурсы. Обратите внимание, что не все системы используют один и тот же символ или значение для обозначения одного и того же ресурса. Этот модуль не пытается скрыть различия между платформами — символы, не определённые для платформы, недоступны в этом модуле на этой платформе.
-
resource.RLIMIT_CORE -
Максимальный размер (в байтах) файла ядра, который может создать текущий процесс. Это может привести к созданию частичного файла ядра, если для хранения всего образа процесса потребовался бы больший файл ядра.
-
resource.RLIMIT_CPU -
Максимальное время процессора (в секундах), которое может использовать процесс. Если этот предел превышен, процессу отправляется сигнал
SIGXCPU. (См. документацию модуляsignalдля получения информации о том, как перехватить этот сигнал и выполнить полезные действия, например, записать открытые файлы на диск.)
-
resource.RLIMIT_FSIZE -
Максимальный размер файла, который может создать процесс.
-
resource.RLIMIT_DATA -
Максимальный размер (в байтах) кучи процесса.
-
resource.RLIMIT_STACK -
Максимальный размер (в байтах) стека вызовов для текущего процесса. Это влияет только на стек основного потока в многопоточном процессе.
-
resource.RLIMIT_RSS -
Максимальный размер резидентного набора, который должен быть предоставлен процессу.
-
resource.RLIMIT_NPROC -
Максимальное количество процессов, которые может создать текущий процесс.
-
resource.RLIMIT_NOFILE -
Максимальное количество открытых дескрипторов файлов для текущего процесса.
-
resource.RLIMIT_OFILE -
Имя BSD для
RLIMIT_NOFILE.
-
resource.RLIMIT_MEMLOCK -
Максимальный адресной пространство, которое может быть заблокировано в памяти.
-
resource.RLIMIT_VMEM -
Наибольшая область отображённой памяти, которую может занимать процесс.
-
resource.RLIMIT_AS -
Максимальная область (в байтах) адресного пространства, которое может занять процесс.
2. Использование ресурсов
Эти функции используются для получения информации об использовании ресурсов:
-
resource.getrusage(who) -
Эта функция возвращает объект, описывающий ресурсы, потребляемые либо текущим процессом, либо его дочерними процессами, как указано параметром who. Параметр who должен быть задан с помощью одной из
RUSAGE_*констант, описанных ниже.Поля возвращаемого значения описывают, как был использован конкретный системный ресурс, например, количество времени, потраченного на выполнение в пользовательском режиме, или количество раз, когда процесс был вытеснен из основной памяти. Некоторые значения зависят от внутреннего интервала тактов часов, например, количество памяти, используемой процессом.
Для обратной совместимости возвращаемое значение также доступно как кортеж из 16 элементов.
Поля
ru_utimeиru_stimeвозвращаемого значения — это значения с плавающей точкой, представляющие количество времени, потраченное на выполнение в пользовательском режиме и в системном режиме соответственно. Остальные значения — целые числа. Подробную информацию о значениях см. в справке getrusage(2). Здесь приведён краткий обзор:Индекс
Поле
Ресурс
0ru_utimeвремя в пользовательском режиме (float)
1ru_stimeвремя в системном режиме (float)
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вынужденные переключения контекста
Эта функция вызовет
ValueError, если указан недопустимый параметр who. Она также может вызвать исключениеerrorв необычных ситуациях.Изменено в версии 2.3: Добавлен доступ к значениям в качестве атрибутов возвращаемого объекта.
-
resource.getpagesize() -
Возвращает количество байтов в системной странице. (Это необязательно должно совпадать с размером страницы оборудования.)
Следующие RUSAGE_* символы передаются функции getrusage(), чтобы указать, информация о каких процессах должна быть предоставлена.
-
resource.RUSAGE_SELF -
RUSAGE_SELFследует использовать для запроса информации, относящейся только к самому процессу.
-
resource.RUSAGE_CHILDREN -
Передайте
getrusage(), чтобы запросить информацию о ресурсах для дочерних процессов вызывающего процесса.
-
resource.RUSAGE_BOTH -
Передайте
getrusage(), чтобы запросить ресурсы, потребляемые как текущим процессом, так и дочерними процессами. Может быть недоступно на всех системах.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/resource.html