resource — Информация об использовании ресурсов
Этот модуль предоставляет базовые механизмы для измерения и контроля системных ресурсов, используемых программой.
Доступность: Unix, кроме WASI.
Для указания конкретных системных ресурсов и запроса информации об их использовании текущим процессом или его дочерними процессами служат символьные константы.
При сбое системного вызова возникает исключение OSError.
-
exception resource.error -
Устаревший псевдоним
OSError.
Ограничения ресурсов
Использование ресурсов можно ограничить с помощью описанной ниже функции 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, если базовый системный вызов завершится с ошибкой.VxWorks поддерживает установку только
RLIMIT_NOFILE.Вызывает событие аудита
resource.setrlimitс аргументамиresource,limits.
-
resource.prlimit(pid, resource[, limits]) -
Объединяет
setrlimit()иgetrlimit()в одной функции и позволяет получать и задавать ограничения ресурсов произвольного процесса. Если pid равен 0, вызов применяется к текущему процессу. Аргументы resource и limits имеют тот же смысл, что и вsetrlimit(), за исключением того, что limits необязателен.Если limits не задан, функция возвращает ограничение resource процесса pid. Если limits задан, ограничение resource процесса устанавливается, а прежнее ограничение ресурса возвращается.
Если процесс с идентификатором pid не найден, возникает исключение
ProcessLookupError; если у пользователя нетCAP_SYS_RESOURCEдля этого процесса, возникает исключениеPermissionError.Вызывает событие аудита
resource.prlimitс аргументамиpid,resource,limits.Доступность: Linux >= 2.6.36 с glibc >= 2.13.
Добавлено в версии 3.4.
Эти символы обозначают ресурсы, потребление которых можно контролировать с помощью описанных ниже функций setrlimit() и getrlimit(). Значения этих символов в точности совпадают с константами, используемыми программами на C.
На справочной странице Unix для getrlimit(2) перечислены доступные ресурсы. Обратите внимание, что в разных системах для обозначения одного и того же ресурса могут использоваться разные символы или значения. Этот модуль не пытается скрывать различия между платформами — символы, не определённые для платформы, в этом модуле на ней недоступны.
-
resource.RLIMIT_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 -
Наибольшая область отображённой памяти, которую может занимать процесс. Обычно является псевдонимом
RLIMIT_AS.Доступность: Solaris, FreeBSD, NetBSD.
-
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, NetBSD.
Добавлено в версии 3.4.
-
resource.RLIMIT_SWAP -
Максимальный размер (в байтах) пространства подкачки, который могут зарезервировать или использовать все процессы с этим идентификатором пользователя. Это ограничение применяется, только если установлен бит 1 параметра sysctl vm.overcommit. Полное описание этого параметра sysctl см. в tuning(7).
Доступность: FreeBSD >= 8.
Добавлено в версии 3.4.
-
resource.RLIMIT_NPTS -
Максимальное количество псевдотерминалов, созданных этим идентификатором пользователя.
Доступность: FreeBSD >= 8.
Добавлено в версии 3.4.
-
resource.RLIMIT_KQUEUES -
Максимальное количество очередей kqueue, которые разрешено создавать этому идентификатору пользователя.
Доступность: FreeBSD >= 11.
Добавлено в версии 3.10.
Использование ресурсов
Эти функции предназначены для получения информации об использовании ресурсов:
-
resource.getrusage(who) -
Эта функция возвращает объект с описанием ресурсов, использованных текущим процессом или его дочерними процессами, в соответствии с параметром who. Для параметра who следует указать одну из констант
RUSAGE_*, описанных ниже.Простой пример:
from resource import * import time # a non CPU-bound task time.sleep(3) print(getrusage(RUSAGE_SELF)) # a CPU-bound task for i in range(10 ** 8): _ = 1 + 1 print(getrusage(RUSAGE_SELF))
Каждое поле возвращаемого значения описывает использование определённого системного ресурса, например время, затраченное на выполнение в пользовательском режиме, или количество случаев выгрузки процесса из основной памяти. Некоторые значения зависят от интервала тактового импульса, например объём памяти, используемый процессом.
Для обратной совместимости возвращаемое значение также доступно в виде кортежа из 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принудительные переключения контекста
Если указан недопустимый параметр who, эта функция вызывает исключение
ValueError. В необычных обстоятельствах также может возникнуть исключениеerror.
-
resource.getpagesize() -
Возвращает количество байтов в системной странице. (Оно не обязательно совпадает с размером страницы оборудования.)
Следующие символы RUSAGE_* передаются функции getrusage() для указания, для каких процессов следует предоставить информацию.
-
resource.RUSAGE_SELF -
Передаётся функции
getrusage()для запроса сведений о ресурсах, использованных вызывающим процессом, то есть суммарно всеми потоками этого процесса.
-
resource.RUSAGE_CHILDREN -
Передаётся функции
getrusage()для запроса сведений о ресурсах, использованных дочерними процессами вызывающего процесса, которые завершились и ожидание которых было выполнено.
-
resource.RUSAGE_BOTH -
Передаётся функции
getrusage()для запроса сведений о ресурсах, использованных текущим процессом и дочерними процессами. Может быть доступна не во всех системах.
-
resource.RUSAGE_THREAD -
Передаётся функции
getrusage()для запроса сведений о ресурсах, использованных текущим потоком. Может быть доступна не во всех системах.Добавлено в версии 3.2.
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/resource.html