resource — Информация об использовании ресурсов
Этот модуль предоставляет базовые механизмы для измерения и управления системными ресурсами, используемыми программой.
Символьные константы используются для указания конкретных системных ресурсов и для запроса информации об использовании как текущего процесса, так и его дочерних процессов.
При сбое системного вызова возбуждается OSError.
-
exception resource.error -
Устаревший псевдоним
OSError.
35.11.1. Пределы ресурсов
Использование ресурсов может быть ограничено с помощью функции 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 -
Максимальный размер (в байтах) файла core, который может создать текущий процесс. Это может привести к созданию частичного файла core, если для хранения всего образа процесса потребуется файл 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 -
Предел для уровня 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 sysctl vm.overcommit установлен. Пожалуйста, обратитесь к tuning(7) для полного описания этого sysctl.
Доступность: FreeBSD 9 или более поздние версии.
Добавлена в версии 3.4.
-
resource.RLIMIT_NPTS -
Максимальное количество псевдотерминалов, созданных этим идентификатором пользователя.
Доступность: FreeBSD 9 или более поздние версии.
Добавлена в версии 3.4.
35.11.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.
-
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.6/library/resource.html