resource — Информация об использовании ресурсов
Этот модуль предоставляет основные механизмы для измерения и контроля системных ресурсов, используемых программой.
Доступность: Unix, кроме 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 -
Максимальная область отображённой памяти, которую может занимать процесс. Обычно является псевдонимом для
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 -
Максимальный размер (в байтах) буферов сокетов, используемых этим пользователем. Это ограничивает объём сетевой памяти и, следовательно, количество структур mbuf, которыми пользователь может одновременно владеть.
Доступность: 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принудительные переключения контекста
Эта функция вызывает исключение
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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/resource.html