擅长:python、mysql、java
<p>可以使用<a href="http://docs.python.org/2/library/resource.html">^{<cd1>} module</a>限制进程及其子进程的可用资源。在</p>
<p>如果需要在内存中解压缩,则可以设置<code>resource.RLIMIT_AS</code>(或<code>RLIMIT_DATA</code>,<code>RLIMIT_STACK</code>),例如使用上下文管理器将其自动还原为以前的值:</p>
<pre><code>import contextlib
import resource
@contextlib.contextmanager
def limit(limit, type=resource.RLIMIT_AS):
soft_limit, hard_limit = resource.getrlimit(type)
resource.setrlimit(type, (limit, hard_limit)) # set soft limit
try:
yield
finally:
resource.setrlimit(type, (soft_limit, hard_limit)) # restore
with limit(1 << 30): # 1GB
# do the thing that might try to consume all memory
</code></pre>
<p>如果达到限制;<code>MemoryError</code>将被提升。在</p>