Resources usage can be limited using the setrlimit() function described
below. Each resource is controlled by a pair of limits: a soft limit and a hard
limit. The soft limit is the current limit, and may be lowered or raised by a
process over time. The soft limit can never exceed the hard limit. The hard
limit can be lowered to any value greater than the soft limit, but not raised.
(Only processes with the effective UID of the super-user can raise a hard
limit.)

The specific resources that can be limited are system dependent. They are
described in the getrlimit(2) man page. The resources listed below
are supported when the underlying operating system supports them; resources
which cannot be checked or controlled by the operating system are not defined in
this module for those platforms.

Sets new limits of consumption of resource. The limits argument must be a
tuple (soft,hard) of two integers describing the new limits. A value of
RLIM_INFINITY can be used to request a limit that is
unlimited.

Raises ValueError if an invalid resource is specified, if the new soft
limit exceeds the hard limit, or if a process tries to raise its hard limit.
Specifying a limit of RLIM_INFINITY when the hard or
system limit for that resource is not unlimited will result in a
ValueError. A process with the effective UID of super-user can
request any valid limit value, including unlimited, but ValueError
will still be raised if the requested limit exceeds the system imposed
limit.

These symbols define resources whose consumption can be controlled using the
setrlimit() and getrlimit() functions described below. The values of
these symbols are exactly the constants used by C programs.

The Unix man page for getrlimit(2) lists the available resources.
Note that not all systems use the same symbol or same value to denote the same
resource. This module does not attempt to mask platform differences — symbols
not defined for a platform will not be available from this module on that
platform.

The maximum size (in bytes) of a core file that the current process can create.
This may result in the creation of a partial core file if a larger core would be
required to contain the entire process image.

The maximum amount of processor time (in seconds) that a process can use. If
this limit is exceeded, a SIGXCPU signal is sent to the process. (See
the signal module documentation for information about how to catch this
signal and do something useful, e.g. flush open files to disk.)

This function returns an object that describes the resources consumed by either
the current process or its children, as specified by the who parameter. The
who parameter should be specified using one of the RUSAGE_*
constants described below.

The fields of the return value each describe how a particular system resource
has been used, e.g. amount of time spent running is user mode or number of times
the process was swapped out of main memory. Some values are dependent on the
clock tick internal, e.g. the amount of memory the process is using.

For backward compatibility, the return value is also accessible as a tuple of 16
elements.

The fields ru_utime and ru_stime of the return value are
floating point values representing the amount of time spent executing in user
mode and the amount of time spent executing in system mode, respectively. The
remaining values are integers. Consult the getrusage(2) man page for
detailed information about these values. A brief summary is presented here:

Index

Field

Resource

0

ru_utime

time in user mode (float)

1

ru_stime

time in system mode (float)

2

ru_maxrss

maximum resident set size

3

ru_ixrss

shared memory size

4

ru_idrss

unshared memory size

5

ru_isrss

unshared stack size

6

ru_minflt

page faults not requiring I/O

7

ru_majflt

page faults requiring I/O

8

ru_nswap

number of swap outs

9

ru_inblock

block input operations

10

ru_oublock

block output operations

11

ru_msgsnd

messages sent

12

ru_msgrcv

messages received

13

ru_nsignals

signals received

14

ru_nvcsw

voluntary context switches

15

ru_nivcsw

involuntary context switches

This function will raise a ValueError if an invalid who parameter is
specified. It may also raise error exception in unusual circumstances.

Returns the number of bytes in a system page. (This need not be the same as the
hardware page size.) This function is useful for determining the number of bytes
of memory a process is using. The third element of the tuple returned by
getrusage() describes memory usage in pages; multiplying by page size
produces number of bytes.

The following RUSAGE_* symbols are passed to the getrusage()
function to specify which processes information should be provided for.