resource — Информация об использовании ресурсов
Этот модуль предоставляет базовые механизмы для измерения и контроля системных ресурсов, используемых программой.
Доступность: Unix, кроме Emscripten и WASI.
Символьные константы используются для указания конкретных системных ресурсов и получения информации об их использовании текущим процессом или его дочерними процессами.
При сбое системного вызова возникает исключение OSError.
-
exception resource.error -
Устаревший псевдоним
OSError.
Ограничения ресурсов
Использование ресурсов можно ограничить с помощью описанной ниже функции setrlimit(). Для каждого ресурса задается пара ограничений: мягкое и жесткое. Мягкое ограничение является текущим и может со временем понижаться или повышаться процессом. Мягкое ограничение не может превышать жесткое. Жесткое ограничение можно понизить до любого значения, превышающего мягкое, но нельзя повысить. (Повысить жесткое ограничение могут только процессы с эффективным UID суперпользователя.)
Конкретные ресурсы, для которых можно задать ограничения, зависят от системы. Они описаны на справочной странице getrlimit(2). Перечисленные ниже ресурсы поддерживаются, если их поддерживает базовая операционная система; ресурсы, которые операционная система не может проверять или контролировать, не определены в этом модуле для соответствующих платформ.
-
resource.RLIM_INFINITY -
Константа, обозначающая отсутствие ограничения для ресурса.
-
resource.getrlimit(resource) -
Возвращает кортеж
(soft, hard)с текущими мягким и жестким ограничениями для ресурса. Возникает исключениеValueError, если указан недопустимый ресурс, илиerror, если базовый системный вызов неожиданно завершается с ошибкой.
-
resource.setrlimit(resource, limits) -
Устанавливает новые ограничения на использование ресурса. Аргумент 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 не указан, функция возвращает ограничение для ресурса процесса pid. Если аргумент limits указан, ограничение для ресурса процесса устанавливается, а прежнее ограничение возвращается.
Возникает исключение
ProcessLookupError, если процесс с указанным pid не найден, иPermissionError, если у пользователя нетCAP_SYS_RESOURCEдля этого процесса.Вызывает событие аудита
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 -
Максимальный объем отображенной памяти, который может занимать процесс.
Доступность: FreeBSD >= 11.
-
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 -
Максимальный размер (в байтах) буферов сокетов, используемых этим пользователем. Это ограничивает объем сетевой памяти и, следовательно, количество mbuf, которые этот пользователь может удерживать в любой момент времени.
Доступность: FreeBSD.
Добавлено в версии 3.4.
-
resource.RLIMIT_SWAP -
Максимальный размер (в байтах) пространства подкачки, который могут резервировать или использовать все процессы данного идентификатора пользователя. Это ограничение применяется только в том случае, если установлен бит 1 параметра sysctl vm.overcommit. Полное описание этого параметра sysctl см. в tuning(7).
Доступность: FreeBSD.
Добавлено в версии 3.4.
-
resource.RLIMIT_NPTS -
Максимальное количество псевдотерминалов, создаваемых пользователем с этим идентификатором.
Доступность: FreeBSD.
Добавлено в версии 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принудительные переключения контекста
Эта функция вызывает исключение
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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/resource.html