resource — Информация об использовании ресурсов
Этот модуль предоставляет основные механизмы для измерения и управления системными ресурсами, используемыми программой.
Символьные константы используются для указания конкретных системных ресурсов и для запроса информации об использовании текущего процесса или его дочерних процессов.
При неудаче системного вызова возбуждается исключение OSError.
-
exception resource.error -
Устаревшее алиас для
OSError.
Пределы ресурсов
Использование ресурсов может быть ограничено с помощью функции setrlimit(), описанной ниже. Каждый ресурс контролируется парой пределов: мягким пределом и жёстким пределом. Мягкий предел — это текущий предел, который может быть понижен или повышен процессом со временем. Мягкий предел никогда не может превышать жёсткий предел. Жёсткий предел может быть понижен до любого значения, большего, чем мягкий предел, но не повышен. (Только процессы с эффективным идентификатором пользователя суперпользователя могут повышать жёсткий предел.)
Конкретные ресурсы, которые могут быть ограничены, зависят от системы. Они описаны в справочной странице 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. Процесс с эффективным идентификатором пользователя суперпользователя может запросить любое допустимое значение предела, включая неограниченное, ноValueErrorвсё равно будет возбуждено, если запрошенный предел превышает наложенный системой предел.setrlimitтакже может возбудитьerror, если системный вызов завершился неудачно.
-
resource.prlimit(pid, resource[, limits]) -
Объединяет
setrlimit()иgetrlimit()в одной функции и поддерживает получение и установку пределов ресурсов произвольного процесса. Если pid равно 0, то вызов применяется к текущему процессу. resource и limits имеют то же значение, что и вsetrlimit(), за исключением того, что limits необязательно.Когда limits не задано, функция возвращает предел resource процесса pid. Когда limits задано, предел resource процесса устанавливается, а прежний предел ресурса возвращается.
Возбуждает
ProcessLookupError, когда pid не найден, иPermissionError, когда у пользователя нетCAP_SYS_RESOURCEдля процесса.Доступность: Linux 2.6.36 или более поздняя версия с glibc 2.13 или более поздней версией.
Добавлена в версии 3.4.
Эти символы определяют ресурсы, потребление которых может быть контролировано с помощью функций 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 -
Максимальная область (в байтах) адресного пространства, которую может занимать процесс.
-
resource.RLIMIT_MSGQUEUE -
Количество байтов, которые могут быть выделены для очередей сообщений POSIX.
Доступность: Linux 2.6.8 или более поздняя версия.
Добавлена в версии 3.4.
-
resource.RLIMIT_NICE -
Потолок уровня приоритета процесса (вычисляется как 20 - rlim_cur).
Доступность: Linux 2.6.12 или более поздняя версия.
Добавлена в версии 3.4.
-
resource.RLIMIT_RTPRIO -
Потолок приоритета реального времени.
Доступность: Linux 2.6.12 или более поздняя версия.
Добавлена в версии 3.4.
-
resource.RLIMIT_RTTIME -
Предел времени (в микросекундах) процессорного времени, которое процесс может потратить на планирование в реальном времени без выполнения блокирующего системного вызова.
Доступность: Linux 2.6.25 или более поздняя версия.
Добавлена в версии 3.4.
-
resource.RLIMIT_SIGPENDING -
Количество сигналов, которые может отправить процесс.
Доступность: Linux 2.6.8 или более поздняя версия.
Добавлена в версии 3.4.
-
resource.RLIMIT_SBSIZE -
Максимальный размер (в байтах) буфера сокета для данного пользователя. Это ограничивает объём сетевой памяти и, следовательно, количество mbufs, которые может удерживать данный пользователь в любой момент.
Доступность: FreeBSD 9 и более поздние версии.
Введено в версии 3.4.
-
resource.RLIMIT_SWAP -
Максимальный размер (в байтах) пространства подкачки, которое может быть зарезервировано или использовано всеми процессами данного пользователя. Это ограничение применяется только если бит 1 системного параметра vm.overcommit установлен. Подробное описание этого параметра см. в tuning(7).
Доступность: FreeBSD 9 и более поздние версии.
Введено в версии 3.4.
-
resource.RLIMIT_NPTS -
Максимальное количество псевдотерминалов, созданных данным пользователем.
Доступность: FreeBSD 9 и более поздние версии.
Введено в версии 3.4.
Использование ресурсов
Эти функции используются для получения информации об использовании ресурсов:
-
resource.getrusage(who) -
Эта функция возвращает объект, описывающий ресурсы, потреблённые текущим процессом или его дочерними процессами, в зависимости от параметра who. Параметр who должен быть задан с использованием одного из
RUSAGE_*констант, описанных ниже.Поля возвращаемого значения описывают использование конкретных системных ресурсов, например, время выполнения в пользовательском режиме или число раз, когда процесс был вытеснен из основной памяти. Некоторые значения зависят от внутреннего тика часов, например, объём используемой процессом памяти.
Для обратной совместимости возвращаемое значение также доступно в виде кортежа из 16 элементов.
Поля
ru_utimeиru_stimeвозвращаемого значения являются значениями с плавающей точкой, представляющими время выполнения в пользовательском и системном режимах соответственно. Остальные значения являются целыми числами. Для получения подробной информации о значениях см. страницу руководства getrusage(2). Краткое описание приведено здесь:Индекс
Поле
Ресурс
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принудительные переключения контекста
Эта функция может вызвать исключение
ValueError, если задан неверный параметр who. Также в необычных ситуациях может быть вызвано исключениеerror.
-
resource.getpagesize() -
Возвращает количество байтов в системной странице. (Это необязательно должно совпадать с размером страницы аппаратного обеспечения.)
Следующие RUSAGE_* символы передаются в функцию getrusage() для указания, информацию о каких процессах необходимо предоставить.
-
resource.RUSAGE_SELF -
Передайте в
getrusage()для запроса ресурсов, потреблённых вызывающим процессом, что является суммой ресурсов, используемых всеми потоками в этом процессе.
-
resource.RUSAGE_CHILDREN -
Передайте в
getrusage()для запроса ресурсов, потреблённых дочерними процессами вызывающего процесса, которые были завершены и обработаны.
-
resource.RUSAGE_BOTH -
Передайте в
getrusage()для запроса ресурсов, потреблённых как текущим процессом, так и дочерними процессами. Может быть недоступен на всех системах.
-
resource.RUSAGE_THREAD -
Передайте в
getrusage()для запроса ресурсов, потреблённых текущим потоком. Может быть недоступен на всех системах.Введено в версии 3.2.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/resource.html