17db96d56Sopenharmony_ci:mod:`resource` --- Resource usage information 27db96d56Sopenharmony_ci============================================== 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: resource 57db96d56Sopenharmony_ci :platform: Unix 67db96d56Sopenharmony_ci :synopsis: An interface to provide resource usage information on the current process. 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci.. moduleauthor:: Jeremy Hylton <jeremy@alum.mit.edu> 97db96d56Sopenharmony_ci.. sectionauthor:: Jeremy Hylton <jeremy@alum.mit.edu> 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci-------------- 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ciThis module provides basic mechanisms for measuring and controlling system 147db96d56Sopenharmony_ciresources utilized by a program. 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci.. include:: ../includes/wasm-notavail.rst 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ciSymbolic constants are used to specify particular system resources and to 197db96d56Sopenharmony_cirequest usage information about either the current process or its children. 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ciAn :exc:`OSError` is raised on syscall failure. 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci.. exception:: error 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci A deprecated alias of :exc:`OSError`. 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ci .. versionchanged:: 3.3 297db96d56Sopenharmony_ci Following :pep:`3151`, this class was made an alias of :exc:`OSError`. 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ciResource Limits 337db96d56Sopenharmony_ci--------------- 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ciResources usage can be limited using the :func:`setrlimit` function described 367db96d56Sopenharmony_cibelow. Each resource is controlled by a pair of limits: a soft limit and a hard 377db96d56Sopenharmony_cilimit. The soft limit is the current limit, and may be lowered or raised by a 387db96d56Sopenharmony_ciprocess over time. The soft limit can never exceed the hard limit. The hard 397db96d56Sopenharmony_cilimit can be lowered to any value greater than the soft limit, but not raised. 407db96d56Sopenharmony_ci(Only processes with the effective UID of the super-user can raise a hard 417db96d56Sopenharmony_cilimit.) 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ciThe specific resources that can be limited are system dependent. They are 447db96d56Sopenharmony_cidescribed in the :manpage:`getrlimit(2)` man page. The resources listed below 457db96d56Sopenharmony_ciare supported when the underlying operating system supports them; resources 467db96d56Sopenharmony_ciwhich cannot be checked or controlled by the operating system are not defined in 477db96d56Sopenharmony_cithis module for those platforms. 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci.. data:: RLIM_INFINITY 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci Constant used to represent the limit for an unlimited resource. 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci.. function:: getrlimit(resource) 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci Returns a tuple ``(soft, hard)`` with the current soft and hard limits of 587db96d56Sopenharmony_ci *resource*. Raises :exc:`ValueError` if an invalid resource is specified, or 597db96d56Sopenharmony_ci :exc:`error` if the underlying system call fails unexpectedly. 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci.. function:: setrlimit(resource, limits) 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci Sets new limits of consumption of *resource*. The *limits* argument must be a 657db96d56Sopenharmony_ci tuple ``(soft, hard)`` of two integers describing the new limits. A value of 667db96d56Sopenharmony_ci :data:`~resource.RLIM_INFINITY` can be used to request a limit that is 677db96d56Sopenharmony_ci unlimited. 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci Raises :exc:`ValueError` if an invalid resource is specified, if the new soft 707db96d56Sopenharmony_ci limit exceeds the hard limit, or if a process tries to raise its hard limit. 717db96d56Sopenharmony_ci Specifying a limit of :data:`~resource.RLIM_INFINITY` when the hard or 727db96d56Sopenharmony_ci system limit for that resource is not unlimited will result in a 737db96d56Sopenharmony_ci :exc:`ValueError`. A process with the effective UID of super-user can 747db96d56Sopenharmony_ci request any valid limit value, including unlimited, but :exc:`ValueError` 757db96d56Sopenharmony_ci will still be raised if the requested limit exceeds the system imposed 767db96d56Sopenharmony_ci limit. 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ci ``setrlimit`` may also raise :exc:`error` if the underlying system call 797db96d56Sopenharmony_ci fails. 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci VxWorks only supports setting :data:`RLIMIT_NOFILE`. 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci .. audit-event:: resource.setrlimit resource,limits resource.setrlimit 847db96d56Sopenharmony_ci 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci.. function:: prlimit(pid, resource[, limits]) 877db96d56Sopenharmony_ci 887db96d56Sopenharmony_ci Combines :func:`setrlimit` and :func:`getrlimit` in one function and 897db96d56Sopenharmony_ci supports to get and set the resources limits of an arbitrary process. If 907db96d56Sopenharmony_ci *pid* is 0, then the call applies to the current process. *resource* and 917db96d56Sopenharmony_ci *limits* have the same meaning as in :func:`setrlimit`, except that 927db96d56Sopenharmony_ci *limits* is optional. 937db96d56Sopenharmony_ci 947db96d56Sopenharmony_ci When *limits* is not given the function returns the *resource* limit of the 957db96d56Sopenharmony_ci process *pid*. When *limits* is given the *resource* limit of the process is 967db96d56Sopenharmony_ci set and the former resource limit is returned. 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci Raises :exc:`ProcessLookupError` when *pid* can't be found and 997db96d56Sopenharmony_ci :exc:`PermissionError` when the user doesn't have ``CAP_SYS_RESOURCE`` for 1007db96d56Sopenharmony_ci the process. 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ci .. audit-event:: resource.prlimit pid,resource,limits resource.prlimit 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci .. availability:: Linux >= 2.6.36 with glibc >= 2.13. 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ci .. versionadded:: 3.4 1077db96d56Sopenharmony_ci 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ciThese symbols define resources whose consumption can be controlled using the 1107db96d56Sopenharmony_ci:func:`setrlimit` and :func:`getrlimit` functions described below. The values of 1117db96d56Sopenharmony_cithese symbols are exactly the constants used by C programs. 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ciThe Unix man page for :manpage:`getrlimit(2)` lists the available resources. 1147db96d56Sopenharmony_ciNote that not all systems use the same symbol or same value to denote the same 1157db96d56Sopenharmony_ciresource. This module does not attempt to mask platform differences --- symbols 1167db96d56Sopenharmony_cinot defined for a platform will not be available from this module on that 1177db96d56Sopenharmony_ciplatform. 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_ci.. data:: RLIMIT_CORE 1217db96d56Sopenharmony_ci 1227db96d56Sopenharmony_ci The maximum size (in bytes) of a core file that the current process can create. 1237db96d56Sopenharmony_ci This may result in the creation of a partial core file if a larger core would be 1247db96d56Sopenharmony_ci required to contain the entire process image. 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_ci 1277db96d56Sopenharmony_ci.. data:: RLIMIT_CPU 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci The maximum amount of processor time (in seconds) that a process can use. If 1307db96d56Sopenharmony_ci this limit is exceeded, a :const:`SIGXCPU` signal is sent to the process. (See 1317db96d56Sopenharmony_ci the :mod:`signal` module documentation for information about how to catch this 1327db96d56Sopenharmony_ci signal and do something useful, e.g. flush open files to disk.) 1337db96d56Sopenharmony_ci 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci.. data:: RLIMIT_FSIZE 1367db96d56Sopenharmony_ci 1377db96d56Sopenharmony_ci The maximum size of a file which the process may create. 1387db96d56Sopenharmony_ci 1397db96d56Sopenharmony_ci 1407db96d56Sopenharmony_ci.. data:: RLIMIT_DATA 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci The maximum size (in bytes) of the process's heap. 1437db96d56Sopenharmony_ci 1447db96d56Sopenharmony_ci 1457db96d56Sopenharmony_ci.. data:: RLIMIT_STACK 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_ci The maximum size (in bytes) of the call stack for the current process. This only 1487db96d56Sopenharmony_ci affects the stack of the main thread in a multi-threaded process. 1497db96d56Sopenharmony_ci 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_ci.. data:: RLIMIT_RSS 1527db96d56Sopenharmony_ci 1537db96d56Sopenharmony_ci The maximum resident set size that should be made available to the process. 1547db96d56Sopenharmony_ci 1557db96d56Sopenharmony_ci 1567db96d56Sopenharmony_ci.. data:: RLIMIT_NPROC 1577db96d56Sopenharmony_ci 1587db96d56Sopenharmony_ci The maximum number of processes the current process may create. 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_ci 1617db96d56Sopenharmony_ci.. data:: RLIMIT_NOFILE 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_ci The maximum number of open file descriptors for the current process. 1647db96d56Sopenharmony_ci 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_ci.. data:: RLIMIT_OFILE 1677db96d56Sopenharmony_ci 1687db96d56Sopenharmony_ci The BSD name for :const:`RLIMIT_NOFILE`. 1697db96d56Sopenharmony_ci 1707db96d56Sopenharmony_ci 1717db96d56Sopenharmony_ci.. data:: RLIMIT_MEMLOCK 1727db96d56Sopenharmony_ci 1737db96d56Sopenharmony_ci The maximum address space which may be locked in memory. 1747db96d56Sopenharmony_ci 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_ci.. data:: RLIMIT_VMEM 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_ci The largest area of mapped memory which the process may occupy. 1797db96d56Sopenharmony_ci 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_ci.. data:: RLIMIT_AS 1827db96d56Sopenharmony_ci 1837db96d56Sopenharmony_ci The maximum area (in bytes) of address space which may be taken by the process. 1847db96d56Sopenharmony_ci 1857db96d56Sopenharmony_ci 1867db96d56Sopenharmony_ci.. data:: RLIMIT_MSGQUEUE 1877db96d56Sopenharmony_ci 1887db96d56Sopenharmony_ci The number of bytes that can be allocated for POSIX message queues. 1897db96d56Sopenharmony_ci 1907db96d56Sopenharmony_ci .. availability:: Linux >= 2.6.8. 1917db96d56Sopenharmony_ci 1927db96d56Sopenharmony_ci .. versionadded:: 3.4 1937db96d56Sopenharmony_ci 1947db96d56Sopenharmony_ci 1957db96d56Sopenharmony_ci.. data:: RLIMIT_NICE 1967db96d56Sopenharmony_ci 1977db96d56Sopenharmony_ci The ceiling for the process's nice level (calculated as 20 - rlim_cur). 1987db96d56Sopenharmony_ci 1997db96d56Sopenharmony_ci .. availability:: Linux >= 2.6.12. 2007db96d56Sopenharmony_ci 2017db96d56Sopenharmony_ci .. versionadded:: 3.4 2027db96d56Sopenharmony_ci 2037db96d56Sopenharmony_ci 2047db96d56Sopenharmony_ci.. data:: RLIMIT_RTPRIO 2057db96d56Sopenharmony_ci 2067db96d56Sopenharmony_ci The ceiling of the real-time priority. 2077db96d56Sopenharmony_ci 2087db96d56Sopenharmony_ci .. availability:: Linux >= 2.6.12. 2097db96d56Sopenharmony_ci 2107db96d56Sopenharmony_ci .. versionadded:: 3.4 2117db96d56Sopenharmony_ci 2127db96d56Sopenharmony_ci 2137db96d56Sopenharmony_ci.. data:: RLIMIT_RTTIME 2147db96d56Sopenharmony_ci 2157db96d56Sopenharmony_ci The time limit (in microseconds) on CPU time that a process can spend 2167db96d56Sopenharmony_ci under real-time scheduling without making a blocking syscall. 2177db96d56Sopenharmony_ci 2187db96d56Sopenharmony_ci .. availability:: Linux >= 2.6.25. 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_ci .. versionadded:: 3.4 2217db96d56Sopenharmony_ci 2227db96d56Sopenharmony_ci 2237db96d56Sopenharmony_ci.. data:: RLIMIT_SIGPENDING 2247db96d56Sopenharmony_ci 2257db96d56Sopenharmony_ci The number of signals which the process may queue. 2267db96d56Sopenharmony_ci 2277db96d56Sopenharmony_ci .. availability:: Linux >= 2.6.8. 2287db96d56Sopenharmony_ci 2297db96d56Sopenharmony_ci .. versionadded:: 3.4 2307db96d56Sopenharmony_ci 2317db96d56Sopenharmony_ci.. data:: RLIMIT_SBSIZE 2327db96d56Sopenharmony_ci 2337db96d56Sopenharmony_ci The maximum size (in bytes) of socket buffer usage for this user. 2347db96d56Sopenharmony_ci This limits the amount of network memory, and hence the amount of mbufs, 2357db96d56Sopenharmony_ci that this user may hold at any time. 2367db96d56Sopenharmony_ci 2377db96d56Sopenharmony_ci .. availability:: FreeBSD. 2387db96d56Sopenharmony_ci 2397db96d56Sopenharmony_ci .. versionadded:: 3.4 2407db96d56Sopenharmony_ci 2417db96d56Sopenharmony_ci.. data:: RLIMIT_SWAP 2427db96d56Sopenharmony_ci 2437db96d56Sopenharmony_ci The maximum size (in bytes) of the swap space that may be reserved or 2447db96d56Sopenharmony_ci used by all of this user id's processes. 2457db96d56Sopenharmony_ci This limit is enforced only if bit 1 of the vm.overcommit sysctl is set. 2467db96d56Sopenharmony_ci Please see 2477db96d56Sopenharmony_ci `tuning(7) <https://man.freebsd.org/cgi/man.cgi?query=tuning&sektion=7>`__ 2487db96d56Sopenharmony_ci for a complete description of this sysctl. 2497db96d56Sopenharmony_ci 2507db96d56Sopenharmony_ci .. availability:: FreeBSD. 2517db96d56Sopenharmony_ci 2527db96d56Sopenharmony_ci .. versionadded:: 3.4 2537db96d56Sopenharmony_ci 2547db96d56Sopenharmony_ci.. data:: RLIMIT_NPTS 2557db96d56Sopenharmony_ci 2567db96d56Sopenharmony_ci The maximum number of pseudo-terminals created by this user id. 2577db96d56Sopenharmony_ci 2587db96d56Sopenharmony_ci .. availability:: FreeBSD. 2597db96d56Sopenharmony_ci 2607db96d56Sopenharmony_ci .. versionadded:: 3.4 2617db96d56Sopenharmony_ci 2627db96d56Sopenharmony_ci.. data:: RLIMIT_KQUEUES 2637db96d56Sopenharmony_ci 2647db96d56Sopenharmony_ci The maximum number of kqueues this user id is allowed to create. 2657db96d56Sopenharmony_ci 2667db96d56Sopenharmony_ci .. availability:: FreeBSD >= 11. 2677db96d56Sopenharmony_ci 2687db96d56Sopenharmony_ci .. versionadded:: 3.10 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ciResource Usage 2717db96d56Sopenharmony_ci-------------- 2727db96d56Sopenharmony_ci 2737db96d56Sopenharmony_ciThese functions are used to retrieve resource usage information: 2747db96d56Sopenharmony_ci 2757db96d56Sopenharmony_ci 2767db96d56Sopenharmony_ci.. function:: getrusage(who) 2777db96d56Sopenharmony_ci 2787db96d56Sopenharmony_ci This function returns an object that describes the resources consumed by either 2797db96d56Sopenharmony_ci the current process or its children, as specified by the *who* parameter. The 2807db96d56Sopenharmony_ci *who* parameter should be specified using one of the :const:`RUSAGE_\*` 2817db96d56Sopenharmony_ci constants described below. 2827db96d56Sopenharmony_ci 2837db96d56Sopenharmony_ci A simple example:: 2847db96d56Sopenharmony_ci 2857db96d56Sopenharmony_ci from resource import * 2867db96d56Sopenharmony_ci import time 2877db96d56Sopenharmony_ci 2887db96d56Sopenharmony_ci # a non CPU-bound task 2897db96d56Sopenharmony_ci time.sleep(3) 2907db96d56Sopenharmony_ci print(getrusage(RUSAGE_SELF)) 2917db96d56Sopenharmony_ci 2927db96d56Sopenharmony_ci # a CPU-bound task 2937db96d56Sopenharmony_ci for i in range(10 ** 8): 2947db96d56Sopenharmony_ci _ = 1 + 1 2957db96d56Sopenharmony_ci print(getrusage(RUSAGE_SELF)) 2967db96d56Sopenharmony_ci 2977db96d56Sopenharmony_ci The fields of the return value each describe how a particular system resource 2987db96d56Sopenharmony_ci has been used, e.g. amount of time spent running is user mode or number of times 2997db96d56Sopenharmony_ci the process was swapped out of main memory. Some values are dependent on the 3007db96d56Sopenharmony_ci clock tick internal, e.g. the amount of memory the process is using. 3017db96d56Sopenharmony_ci 3027db96d56Sopenharmony_ci For backward compatibility, the return value is also accessible as a tuple of 16 3037db96d56Sopenharmony_ci elements. 3047db96d56Sopenharmony_ci 3057db96d56Sopenharmony_ci The fields :attr:`ru_utime` and :attr:`ru_stime` of the return value are 3067db96d56Sopenharmony_ci floating point values representing the amount of time spent executing in user 3077db96d56Sopenharmony_ci mode and the amount of time spent executing in system mode, respectively. The 3087db96d56Sopenharmony_ci remaining values are integers. Consult the :manpage:`getrusage(2)` man page for 3097db96d56Sopenharmony_ci detailed information about these values. A brief summary is presented here: 3107db96d56Sopenharmony_ci 3117db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3127db96d56Sopenharmony_ci | Index | Field | Resource | 3137db96d56Sopenharmony_ci +========+=====================+=======================================+ 3147db96d56Sopenharmony_ci | ``0`` | :attr:`ru_utime` | time in user mode (float seconds) | 3157db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3167db96d56Sopenharmony_ci | ``1`` | :attr:`ru_stime` | time in system mode (float seconds) | 3177db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3187db96d56Sopenharmony_ci | ``2`` | :attr:`ru_maxrss` | maximum resident set size | 3197db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3207db96d56Sopenharmony_ci | ``3`` | :attr:`ru_ixrss` | shared memory size | 3217db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3227db96d56Sopenharmony_ci | ``4`` | :attr:`ru_idrss` | unshared memory size | 3237db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3247db96d56Sopenharmony_ci | ``5`` | :attr:`ru_isrss` | unshared stack size | 3257db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3267db96d56Sopenharmony_ci | ``6`` | :attr:`ru_minflt` | page faults not requiring I/O | 3277db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3287db96d56Sopenharmony_ci | ``7`` | :attr:`ru_majflt` | page faults requiring I/O | 3297db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3307db96d56Sopenharmony_ci | ``8`` | :attr:`ru_nswap` | number of swap outs | 3317db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3327db96d56Sopenharmony_ci | ``9`` | :attr:`ru_inblock` | block input operations | 3337db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3347db96d56Sopenharmony_ci | ``10`` | :attr:`ru_oublock` | block output operations | 3357db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3367db96d56Sopenharmony_ci | ``11`` | :attr:`ru_msgsnd` | messages sent | 3377db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3387db96d56Sopenharmony_ci | ``12`` | :attr:`ru_msgrcv` | messages received | 3397db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3407db96d56Sopenharmony_ci | ``13`` | :attr:`ru_nsignals` | signals received | 3417db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3427db96d56Sopenharmony_ci | ``14`` | :attr:`ru_nvcsw` | voluntary context switches | 3437db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3447db96d56Sopenharmony_ci | ``15`` | :attr:`ru_nivcsw` | involuntary context switches | 3457db96d56Sopenharmony_ci +--------+---------------------+---------------------------------------+ 3467db96d56Sopenharmony_ci 3477db96d56Sopenharmony_ci This function will raise a :exc:`ValueError` if an invalid *who* parameter is 3487db96d56Sopenharmony_ci specified. It may also raise :exc:`error` exception in unusual circumstances. 3497db96d56Sopenharmony_ci 3507db96d56Sopenharmony_ci 3517db96d56Sopenharmony_ci.. function:: getpagesize() 3527db96d56Sopenharmony_ci 3537db96d56Sopenharmony_ci Returns the number of bytes in a system page. (This need not be the same as the 3547db96d56Sopenharmony_ci hardware page size.) 3557db96d56Sopenharmony_ci 3567db96d56Sopenharmony_ciThe following :const:`RUSAGE_\*` symbols are passed to the :func:`getrusage` 3577db96d56Sopenharmony_cifunction to specify which processes information should be provided for. 3587db96d56Sopenharmony_ci 3597db96d56Sopenharmony_ci 3607db96d56Sopenharmony_ci.. data:: RUSAGE_SELF 3617db96d56Sopenharmony_ci 3627db96d56Sopenharmony_ci Pass to :func:`getrusage` to request resources consumed by the calling 3637db96d56Sopenharmony_ci process, which is the sum of resources used by all threads in the process. 3647db96d56Sopenharmony_ci 3657db96d56Sopenharmony_ci 3667db96d56Sopenharmony_ci.. data:: RUSAGE_CHILDREN 3677db96d56Sopenharmony_ci 3687db96d56Sopenharmony_ci Pass to :func:`getrusage` to request resources consumed by child processes 3697db96d56Sopenharmony_ci of the calling process which have been terminated and waited for. 3707db96d56Sopenharmony_ci 3717db96d56Sopenharmony_ci 3727db96d56Sopenharmony_ci.. data:: RUSAGE_BOTH 3737db96d56Sopenharmony_ci 3747db96d56Sopenharmony_ci Pass to :func:`getrusage` to request resources consumed by both the current 3757db96d56Sopenharmony_ci process and child processes. May not be available on all systems. 3767db96d56Sopenharmony_ci 3777db96d56Sopenharmony_ci 3787db96d56Sopenharmony_ci.. data:: RUSAGE_THREAD 3797db96d56Sopenharmony_ci 3807db96d56Sopenharmony_ci Pass to :func:`getrusage` to request resources consumed by the current 3817db96d56Sopenharmony_ci thread. May not be available on all systems. 3827db96d56Sopenharmony_ci 3837db96d56Sopenharmony_ci .. versionadded:: 3.2 384