resource — Информация об использовании ресурсов
Этот модуль предоставляет базовые механизмы для измерения и управления системными ресурсами, используемыми программой.
Символьные константы используются для указания конкретных системных ресурсов и для запроса информации об использовании текущего процесса или его дочерних процессов.
При неудачном вызове системной функции поднимается OSError.
-
exception resource.error -
Устаревший псевдоним для
OSError.
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, если базовый системный вызов завершится неудачно.
-
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.
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.5/library/resource.html