<p>您还可以使用标准库模块中的<code>getrusage()</code>函数。结果对象具有属性<code>ru_maxrss</code>,该属性给出调用进程的总峰值内存使用量:</p>
<pre><code>>>> import resource
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
2656
</code></pre>
<p><a href="http://docs.python.org/library/resource.html#resource-usage" rel="nofollow noreferrer">Python docs</a>并不清楚这些单位到底是什么,但是用于<code>getrusage(2)</code>的<a href="http://developer.apple.com/library/mac/#documentation/darwin/reference/manpages/man2/getrusage.2.html" rel="nofollow noreferrer">Mac OS X man page</a>将这些单位描述为千字节。</p>
<p>Linux手册页并不清楚,但它似乎相当于接受答案中描述的<code>/proc/self/status</code>信息(即千字节)。对于上述在Linux上运行的同一进程,接受的答案中列出的函数给出:</p>
<pre><code>>>> memory_usage()
{'peak': 6392, 'rss': 2656}
</code></pre>
<p>这可能不像<code>/proc/self/status</code>解决方案那么容易使用,但它是标准库,因此(如果单元是标准的)它应该是跨平台的,并且可以在缺少<code>/proc/</code>的系统(例如Mac OS X和其他unix,可能是Windows)上使用。</p>
<p>此外,还可以给<code>getrusage()</code>函数<code>resource.RUSAGE_CHILDREN</code>以获取子进程的用法,以及(在某些系统上)为总(自身和子)进程用法<code>resource.RUSAGE_BOTH</code>。</p>
<p>这将涵盖<code>memory_get_usage()</code>情况,但不包括峰值使用量。我不确定来自<code>resource</code>模块的任何其他函数是否可以提供峰值使用率。</p>