uTools-Manuals/docs/python/resource.html
2019-04-08 23:22:26 +08:00

1 line
31 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="body" role="main"><div class="section" id="module-resource"><h1><span class="yiyi-st" id="yiyi-10">35.11. <a class="reference internal" href="#module-resource" title="resource: An interface to provide resource usage information on the current process. (Unix)"><code class="xref py py-mod docutils literal"><span class="pre">resource</span></code></a> - 资源使用信息</span></h1><p><span class="yiyi-st" id="yiyi-11">该模块提供用于测量和控制程序利用的系统资源的基本机制。</span></p><p><span class="yiyi-st" id="yiyi-12">符号常量用于指定特定的系统资源,并请求关于当前进程或其子进程的使用信息。</span></p><p><span class="yiyi-st" id="yiyi-13">在syscall失败时引发<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a></span></p><dl class="exception"><dt id="resource.error"><span class="yiyi-st" id="yiyi-14"> <em class="property">exception </em><code class="descclassname">resource.</code><code class="descname">error</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-15">已弃用的<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>别名。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-16"><span class="versionmodified">在版本3.3中已更改:</span><span class="target" id="index-0"></span> <a class="pep reference external" href="https://www.python.org/dev/peps/pep-3151"><strong>PEP 3151</strong></a>之后,此类被设为<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>的别名。</span></p></div></dd></dl><div class="section" id="resource-limits"><h2><span class="yiyi-st" id="yiyi-17">35.11.1. </span><span class="yiyi-st" id="yiyi-18">Resource Limits</span></h2><p><span class="yiyi-st" id="yiyi-19">可以使用下面描述的<a class="reference internal" href="#resource.setrlimit" title="resource.setrlimit"><code class="xref py py-func docutils literal"><span class="pre">setrlimit()</span></code></a>函数限制资源使用。</span><span class="yiyi-st" id="yiyi-20">每个资源由一对限制控制:软限制和硬限制。</span><span class="yiyi-st" id="yiyi-21">软限制是电流限制,并且可以随着时间过程由过程降低或升高。</span><span class="yiyi-st" id="yiyi-22">软限制不能超过硬限制。</span><span class="yiyi-st" id="yiyi-23">硬限制可以降低到大于软限制的任何值,但不能提高。</span><span class="yiyi-st" id="yiyi-24">只有具有超级用户的有效UID的进程才能引入硬限制。</span></p><p><span class="yiyi-st" id="yiyi-25">可以限制的具体资源是系统相关的。</span><span class="yiyi-st" id="yiyi-26">它们在<em class="manpage">getrlimit2</em>手册页中描述。</span><span class="yiyi-st" id="yiyi-27">下面列出的资源在底层操作系统支持时支持;不能由操作系统检查或控制的资源在本模块中没有为这些平台定义。</span></p><dl class="data"><dt id="resource.RLIM_INFINITY"><span class="yiyi-st" id="yiyi-28"> <code class="descclassname">resource.</code><code class="descname">RLIM_INFINITY</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-29">常量用于表示无限资源的限制。</span></p></dd></dl><dl class="function"><dt id="resource.getrlimit"><span class="yiyi-st" id="yiyi-30"> <code class="descclassname">resource.</code><code class="descname">getrlimit</code><span class="sig-paren">(</span><em>resource</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-31">使用<em>资源</em>的当前软和硬限制返回元组<code class="docutils literal"><span class="pre">(软,</span> <span class="pre">硬)</span> </code></span><span class="yiyi-st" id="yiyi-32">如果底层系统调用意外失败,则引发<a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal"><span class="pre">ValueError</span></code></a>(如果指定了无效资源)或<a class="reference internal" href="#resource.error" title="resource.error"><code class="xref py py-exc docutils literal"><span class="pre">error</span></code></a></span></p></dd></dl><dl class="function"><dt id="resource.setrlimit"><span class="yiyi-st" id="yiyi-33"> <code class="descclassname">resource.</code><code class="descname">setrlimit</code><span class="sig-paren">(</span><em>resource</em>, <em>limits</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-34">设置<em>资源</em>的新限制。</span><span class="yiyi-st" id="yiyi-35"><em>limits</em>参数必须是描述新限制的两个整数的元组<code class="docutils literal"><span class="pre">soft</span> <span class="pre">hard</span> </code></span><span class="yiyi-st" id="yiyi-36"><a class="reference internal" href="#resource.RLIM_INFINITY" title="resource.RLIM_INFINITY"><code class="xref py py-data docutils literal"><span class="pre">RLIM_INFINITY</span></code></a>可用于请求无限制的限制。</span></p><p><span class="yiyi-st" id="yiyi-37">如果指定了无效的资源,如果新的软限制超过硬限制,或者如果进程尝试引入其硬限制,则引发<a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal"><span class="pre">ValueError</span></code></a></span><span class="yiyi-st" id="yiyi-38">当该资源的硬性或系统限制不是无限制时,指定<a class="reference internal" href="#resource.RLIM_INFINITY" title="resource.RLIM_INFINITY"><code class="xref py py-data docutils literal"><span class="pre">RLIM_INFINITY</span></code></a>的限制将导致<a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal"><span class="pre">ValueError</span></code></a></span><span class="yiyi-st" id="yiyi-39">具有超级用户的有效UID的进程可以请求任何有效的限制值包括无限的但是如果所请求的限制超过系统强加的限制则仍然会引发<a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal"><span class="pre">ValueError</span></code></a></span></p><p><span class="yiyi-st" id="yiyi-40">如果底层系统调用失败,<code class="docutils literal"><span class="pre">setrlimit</span></code>也可能引发<a class="reference internal" href="#resource.error" title="resource.error"><code class="xref py py-exc docutils literal"><span class="pre">error</span></code></a></span></p></dd></dl><dl class="function"><dt id="resource.prlimit"><span class="yiyi-st" id="yiyi-41"> <code class="descclassname">resource.</code><code class="descname">prlimit</code><span class="sig-paren">(</span><em>pid</em>, <em>resource</em><span class="optional">[</span>, <em>limits</em><span class="optional">]</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-42">在一个函数中组合<a class="reference internal" href="#resource.setrlimit" title="resource.setrlimit"><code class="xref py py-func docutils literal"><span class="pre">setrlimit()</span></code></a><a class="reference internal" href="#resource.getrlimit" title="resource.getrlimit"><code class="xref py py-func docutils literal"><span class="pre">getrlimit()</span></code></a>,并支持获取和设置任意进程的资源限制。</span><span class="yiyi-st" id="yiyi-43">如果<em>pid</em>为0则调用将应用于当前进程。</span><span class="yiyi-st" id="yiyi-44"><em>资源</em><em>限制</em>的含义与<a class="reference internal" href="#resource.setrlimit" title="resource.setrlimit"><code class="xref py py-func docutils literal"><span class="pre">setrlimit()</span></code></a>中相同,除了<em>限制</em>是可选的。</span></p><p><span class="yiyi-st" id="yiyi-45">当未给出<em>limit</em>时,函数返回进程<em>pid</em><em>资源</em>限制。</span><span class="yiyi-st" id="yiyi-46">当给定<em>限制</em>时,设置进程的<em>资源</em>限制,并返回前一个资源限制。</span></p><p><span class="yiyi-st" id="yiyi-47">当用户没有用于进程的<code class="docutils literal"><span class="pre">CAP_SYS_RESOURCE</span></code>时,当无法找到<em>pid</em><a class="reference internal" href="exceptions.html#PermissionError" title="PermissionError"><code class="xref py py-exc docutils literal"><span class="pre">PermissionError</span></code></a>时引发<a class="reference internal" href="exceptions.html#ProcessLookupError" title="ProcessLookupError"><code class="xref py py-exc docutils literal"><span class="pre">ProcessLookupError</span></code></a></span></p><p><span class="yiyi-st" id="yiyi-48">可用性Linux 2.6.36或更高版本使用glibc 2.13或更高版本</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-49"><span class="versionmodified">版本3.4中的新功能。</span></span></p></div></dd></dl><p><span class="yiyi-st" id="yiyi-50">这些符号定义可以使用下面描述的<a class="reference internal" href="#resource.setrlimit" title="resource.setrlimit"><code class="xref py py-func docutils literal"><span class="pre">setrlimit()</span></code></a><a class="reference internal" href="#resource.getrlimit" title="resource.getrlimit"><code class="xref py py-func docutils literal"><span class="pre">getrlimit()</span></code></a>函数控制其消耗的资源。</span><span class="yiyi-st" id="yiyi-51">这些符号的值正是C程序使用的常量。</span></p><p><span class="yiyi-st" id="yiyi-52"><em class="manpage">getrlimit2</em>的Unix手册页列出了可用的资源。</span><span class="yiyi-st" id="yiyi-53">请注意,并非所有系统都使用相同的符号或相同的值来表示相同的资源。</span><span class="yiyi-st" id="yiyi-54">此模块不会尝试屏蔽平台差异 - 未为平台定义的符号将无法从该平台上的此模块获取。</span></p><dl class="data"><dt id="resource.RLIMIT_CORE"><span class="yiyi-st" id="yiyi-55"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_CORE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-56">当前进程可以创建的核心文件的最大大小(以字节为单位)。</span><span class="yiyi-st" id="yiyi-57">如果需要更大的核来包含整个过程映像,则这可能导致创建部分核心文件。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_CPU"><span class="yiyi-st" id="yiyi-58"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_CPU</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-59">进程可以使用的最大处理器时间量(以秒为单位)。</span><span class="yiyi-st" id="yiyi-60">如果超过此限制,则会向进程发送<code class="xref py py-const docutils literal"><span class="pre">SIGXCPU</span></code>信号。</span><span class="yiyi-st" id="yiyi-61">(有关如何捕获此信号并执行某些有用操作的信息,请参阅<a class="reference internal" href="signal.html#module-signal" title="signal: Set handlers for asynchronous events."><code class="xref py py-mod docutils literal"><span class="pre">signal</span></code></a>模块文档。</span><span class="yiyi-st" id="yiyi-62">将打开的文件刷新到磁盘。)</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_FSIZE"><span class="yiyi-st" id="yiyi-63"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_FSIZE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-64">进程可能创建的文件的最大大小。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_DATA"><span class="yiyi-st" id="yiyi-65"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_DATA</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-66">进程堆的最大大小(以字节为单位)。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_STACK"><span class="yiyi-st" id="yiyi-67"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_STACK</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-68">当前进程的调用堆栈的最大大小(以字节为单位)。</span><span class="yiyi-st" id="yiyi-69">这只影响多线程进程中主线程的堆栈。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_RSS"><span class="yiyi-st" id="yiyi-70"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_RSS</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-71">应该为进程提供的最大驻留集大小。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_NPROC"><span class="yiyi-st" id="yiyi-72"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_NPROC</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-73"></span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_NOFILE"><span class="yiyi-st" id="yiyi-74"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_NOFILE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-75">当前进程的打开文件描述器的最大数量。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_OFILE"><span class="yiyi-st" id="yiyi-76"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_OFILE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-77"><a class="reference internal" href="#resource.RLIMIT_NOFILE" title="resource.RLIMIT_NOFILE"><code class="xref py py-const docutils literal"><span class="pre">RLIMIT_NOFILE</span></code></a>的BSD名称。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_MEMLOCK"><span class="yiyi-st" id="yiyi-78"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_MEMLOCK</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-79">可以在内存中锁定的最大地址空间。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_VMEM"><span class="yiyi-st" id="yiyi-80"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_VMEM</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-81">过程可能占用的映射内存的最大区域。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_AS"><span class="yiyi-st" id="yiyi-82"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_AS</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-83">进程可能占用的地址空间的最大区域(以字节为单位)。</span></p></dd></dl><dl class="data"><dt id="resource.RLIMIT_MSGQUEUE"><span class="yiyi-st" id="yiyi-84"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_MSGQUEUE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-85">可分配给POSIX消息队列的字节数。</span></p><p><span class="yiyi-st" id="yiyi-86">可用性Linux 2.6.8或更高版本。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-87"><span class="versionmodified">版本3.4中的新功能。</span></span></p></div></dd></dl><dl class="data"><dt id="resource.RLIMIT_NICE"><span class="yiyi-st" id="yiyi-88"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_NICE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-89">进程的最高级别的水平计算为20 - rlim_cur</span></p><p><span class="yiyi-st" id="yiyi-90">可用性Linux 2.6.12或更高版本。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-91"><span class="versionmodified">版本3.4中的新功能。</span></span></p></div></dd></dl><dl class="data"><dt id="resource.RLIMIT_RTPRIO"><span class="yiyi-st" id="yiyi-92"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_RTPRIO</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-93">实时优先级的上限。</span></p><p><span class="yiyi-st" id="yiyi-94">可用性Linux 2.6.12或更高版本。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-95"><span class="versionmodified">版本3.4中的新功能。</span></span></p></div></dd></dl><dl class="data"><dt id="resource.RLIMIT_RTTIME"><span class="yiyi-st" id="yiyi-96"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_RTTIME</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-97">进程可以在实时调度下花费的CPU时间的时间限制以微秒为单位而不会阻塞系统调用。</span></p><p><span class="yiyi-st" id="yiyi-98">可用性Linux 2.6.25或更高版本。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-99"><span class="versionmodified">版本3.4中的新功能。</span></span></p></div></dd></dl><dl class="data"><dt id="resource.RLIMIT_SIGPENDING"><span class="yiyi-st" id="yiyi-100"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_SIGPENDING</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-101">进程可能排队的信号数。</span></p><p><span class="yiyi-st" id="yiyi-102">可用性Linux 2.6.8或更高版本。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-103"><span class="versionmodified">版本3.4中的新功能。</span></span></p></div></dd></dl><dl class="data"><dt id="resource.RLIMIT_SBSIZE"><span class="yiyi-st" id="yiyi-104"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_SBSIZE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-105">此用户的套接字缓冲区使用的最大大小(以字节为单位)。</span><span class="yiyi-st" id="yiyi-106">这限制了此用户可以随时保存的网络内存量因此限制mbuf的数量。</span></p><p><span class="yiyi-st" id="yiyi-107">可用性FreeBSD 9或更高版本。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-108"><span class="versionmodified">版本3.4中的新功能。</span></span></p></div></dd></dl><dl class="data"><dt id="resource.RLIMIT_SWAP"><span class="yiyi-st" id="yiyi-109"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_SWAP</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-110">可由此用户ID的所有进程保留或使用的交换空间的最大大小以字节为单位</span><span class="yiyi-st" id="yiyi-111">仅当设置了vm.overcommit sysctl的位1时才会强制执行此限制。</span><span class="yiyi-st" id="yiyi-112">有关此sysctl的完整说明请参阅<em class="manpage">tuning7</em></span></p><p><span class="yiyi-st" id="yiyi-113">可用性FreeBSD 9或更高版本。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-114"><span class="versionmodified">版本3.4中的新功能。</span></span></p></div></dd></dl><dl class="data"><dt id="resource.RLIMIT_NPTS"><span class="yiyi-st" id="yiyi-115"> <code class="descclassname">resource.</code><code class="descname">RLIMIT_NPTS</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-116">此用户ID创建的伪终端的最大数量。</span></p><p><span class="yiyi-st" id="yiyi-117">可用性FreeBSD 9或更高版本。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-118"><span class="versionmodified">版本3.4中的新功能。</span></span></p></div></dd></dl></div><div class="section" id="resource-usage"><h2><span class="yiyi-st" id="yiyi-119">35.11.2. </span><span class="yiyi-st" id="yiyi-120">Resource Usage</span></h2><p><span class="yiyi-st" id="yiyi-121">这些函数用于检索资源使用信息:</span></p><dl class="function"><dt id="resource.getrusage"><span class="yiyi-st" id="yiyi-122"> <code class="descclassname">resource.</code><code class="descname">getrusage</code><span class="sig-paren">(</span><em>who</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-123">此函数返回描述由当前进程或其子进程消耗的资源的对象,由<em>who</em>参数指定。</span><span class="yiyi-st" id="yiyi-124">应使用下面描述的<code class="xref py py-const docutils literal"><span class="pre">RUSAGE_*</span></code>常量之一指定<em>who</em>参数。</span></p><p><span class="yiyi-st" id="yiyi-125">返回值的字段各自描述特定系统资源如何被使用,例如,</span><span class="yiyi-st" id="yiyi-126">花费的运行时间是用户模式或进程被交换出主存储器的次数。</span><span class="yiyi-st" id="yiyi-127">一些值取决于内部的时钟节拍,例如。</span><span class="yiyi-st" id="yiyi-128">进程正在使用的内存量。</span></p><p><span class="yiyi-st" id="yiyi-129">为了向后兼容返回值也可以作为16个元素的元组访问。</span></p><p><span class="yiyi-st" id="yiyi-130">返回值的字段<code class="xref py py-attr docutils literal"><span class="pre">ru_utime</span></code><code class="xref py py-attr docutils literal"><span class="pre">ru_stime</span></code>分别是表示在用户模式下执行的时间量和在系统模式下执行所花费的时间量的浮点值。</span><span class="yiyi-st" id="yiyi-131">其余值为整数。</span><span class="yiyi-st" id="yiyi-132">有关这些值的详细信息,请参阅<em class="manpage">getrusage2</em>手册页。</span><span class="yiyi-st" id="yiyi-133">简要摘要如下:</span></p><table border="1" class="docutils"><thead valign="bottom"><tr class="row-odd"><th class="head"><span class="yiyi-st" id="yiyi-134">指数</span></th><th class="head"><span class="yiyi-st" id="yiyi-135">领域</span></th><th class="head"><span class="yiyi-st" id="yiyi-136">资源</span></th></tr></thead><tbody valign="top"><tr class="row-even"><td><span class="yiyi-st" id="yiyi-137"><code class="docutils literal"><span class="pre">0</span></code></span></td><td><span class="yiyi-st" id="yiyi-138"><code class="xref py py-attr docutils literal"><span class="pre">ru_utime</span></code></span></td><td><span class="yiyi-st" id="yiyi-139">用户模式下的时间float</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-140"><code class="docutils literal"><span class="pre">1</span></code></span></td><td><span class="yiyi-st" id="yiyi-141"><code class="xref py py-attr docutils literal"><span class="pre">ru_stime</span></code></span></td><td><span class="yiyi-st" id="yiyi-142">系统模式下的时间(浮点)</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-143"><code class="docutils literal"><span class="pre">2</span></code></span></td><td><span class="yiyi-st" id="yiyi-144"><code class="xref py py-attr docutils literal"><span class="pre">ru_maxrss</span></code></span></td><td><span class="yiyi-st" id="yiyi-145">最大驻留集大小</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-146"><code class="docutils literal"><span class="pre">3</span></code></span></td><td><span class="yiyi-st" id="yiyi-147"><code class="xref py py-attr docutils literal"><span class="pre">ru_ixrss</span></code></span></td><td><span class="yiyi-st" id="yiyi-148">共享内存大小</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-149"><code class="docutils literal"><span class="pre">4</span></code></span></td><td><span class="yiyi-st" id="yiyi-150"><code class="xref py py-attr docutils literal"><span class="pre">ru_idrss</span></code></span></td><td><span class="yiyi-st" id="yiyi-151">非共享内存大小</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-152"><code class="docutils literal"><span class="pre">5</span></code></span></td><td><span class="yiyi-st" id="yiyi-153"><code class="xref py py-attr docutils literal"><span class="pre">ru_isrss</span></code></span></td><td><span class="yiyi-st" id="yiyi-154">非共享堆栈大小</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-155"><code class="docutils literal"><span class="pre">6</span></code></span></td><td><span class="yiyi-st" id="yiyi-156"><code class="xref py py-attr docutils literal"><span class="pre">ru_minflt</span></code></span></td><td><span class="yiyi-st" id="yiyi-157">页面故障不需要I / O</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-158"><code class="docutils literal"><span class="pre">7</span></code></span></td><td><span class="yiyi-st" id="yiyi-159"><code class="xref py py-attr docutils literal"><span class="pre">ru_majflt</span></code></span></td><td><span class="yiyi-st" id="yiyi-160">页面故障需要I / O</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-161"><code class="docutils literal"><span class="pre">8</span></code></span></td><td><span class="yiyi-st" id="yiyi-162"><code class="xref py py-attr docutils literal"><span class="pre">ru_nswap</span></code></span></td><td><span class="yiyi-st" id="yiyi-163">换出数量</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-164"><code class="docutils literal"><span class="pre">9</span></code></span></td><td><span class="yiyi-st" id="yiyi-165"><code class="xref py py-attr docutils literal"><span class="pre">ru_inblock</span></code></span></td><td><span class="yiyi-st" id="yiyi-166">块输入操作</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-167"><code class="docutils literal"><span class="pre">10</span></code></span></td><td><span class="yiyi-st" id="yiyi-168"><code class="xref py py-attr docutils literal"><span class="pre">ru_oublock</span></code></span></td><td><span class="yiyi-st" id="yiyi-169">块输出操作</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-170"><code class="docutils literal"><span class="pre">11</span></code></span></td><td><span class="yiyi-st" id="yiyi-171"><code class="xref py py-attr docutils literal"><span class="pre">ru_msgsnd</span></code></span></td><td><span class="yiyi-st" id="yiyi-172">消息发送</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-173"><code class="docutils literal"><span class="pre">12</span></code></span></td><td><span class="yiyi-st" id="yiyi-174"><code class="xref py py-attr docutils literal"><span class="pre">ru_msgrcv</span></code></span></td><td><span class="yiyi-st" id="yiyi-175">消息接收</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-176"><code class="docutils literal"><span class="pre">13</span></code></span></td><td><span class="yiyi-st" id="yiyi-177"><code class="xref py py-attr docutils literal"><span class="pre">ru_nsignals</span></code></span></td><td><span class="yiyi-st" id="yiyi-178">信号接收</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-179"><code class="docutils literal"><span class="pre">14</span></code></span></td><td><span class="yiyi-st" id="yiyi-180"><code class="xref py py-attr docutils literal"><span class="pre">ru_nvcsw</span></code></span></td><td><span class="yiyi-st" id="yiyi-181">自愿上下文切换</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-182"><code class="docutils literal"><span class="pre">15</span></code></span></td><td><span class="yiyi-st" id="yiyi-183"><code class="xref py py-attr docutils literal"><span class="pre">ru_nivcsw</span></code></span></td><td><span class="yiyi-st" id="yiyi-184">非随意上下文切换</span></td></tr></tbody></table><p><span class="yiyi-st" id="yiyi-185">如果指定了无效的<em>who</em>参数,此函数将引发<a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal"><span class="pre">ValueError</span></code></a></span><span class="yiyi-st" id="yiyi-186">它也可能在异常情况下引发<a class="reference internal" href="#resource.error" title="resource.error"><code class="xref py py-exc docutils literal"><span class="pre">error</span></code></a>异常。</span></p></dd></dl><dl class="function"><dt id="resource.getpagesize"><span class="yiyi-st" id="yiyi-187"> <code class="descclassname">resource.</code><code class="descname">getpagesize</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-188">返回系统页面中的字节数。</span><span class="yiyi-st" id="yiyi-189">(这不需要与硬件页面大小相同。)</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-190">以下<code class="xref py py-const docutils literal"><span class="pre">RUSAGE_*</span></code>符号被传递到<a class="reference internal" href="#resource.getrusage" title="resource.getrusage"><code class="xref py py-func docutils literal"><span class="pre">getrusage()</span></code></a>函数,以指定应提供哪些进程信息。</span></p><dl class="data"><dt id="resource.RUSAGE_SELF"><span class="yiyi-st" id="yiyi-191"> <code class="descclassname">resource.</code><code class="descname">RUSAGE_SELF</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-192">传递到<a class="reference internal" href="#resource.getrusage" title="resource.getrusage"><code class="xref py py-func docutils literal"><span class="pre">getrusage()</span></code></a>以请求调用进程消耗的资源,这是进程中的所有线程使用的资源的总和。</span></p></dd></dl><dl class="data"><dt id="resource.RUSAGE_CHILDREN"><span class="yiyi-st" id="yiyi-193"> <code class="descclassname">resource.</code><code class="descname">RUSAGE_CHILDREN</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-194">传递到<a class="reference internal" href="#resource.getrusage" title="resource.getrusage"><code class="xref py py-func docutils literal"><span class="pre">getrusage()</span></code></a>以请求已终止并等待的调用进程的子进程消耗的资源。</span></p></dd></dl><dl class="data"><dt id="resource.RUSAGE_BOTH"><span class="yiyi-st" id="yiyi-195"> <code class="descclassname">resource.</code><code class="descname">RUSAGE_BOTH</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-196">Pass to <a class="reference internal" href="#resource.getrusage" title="resource.getrusage"><code class="xref py py-func docutils literal"><span class="pre">getrusage()</span></code></a> to request resources consumed by both the current process and child processes. </span><span class="yiyi-st" id="yiyi-197">可能不适用于所有系统。</span></p></dd></dl><dl class="data"><dt id="resource.RUSAGE_THREAD"><span class="yiyi-st" id="yiyi-198"> <code class="descclassname">resource.</code><code class="descname">RUSAGE_THREAD</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-199">传递到<a class="reference internal" href="#resource.getrusage" title="resource.getrusage"><code class="xref py py-func docutils literal"><span class="pre">getrusage()</span></code></a>以请求当前线程使用的资源。</span><span class="yiyi-st" id="yiyi-200">可能不适用于所有系统。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-201"><span class="versionmodified">版本3.2中的新功能。</span></span></p></div></dd></dl></div></div></div>