繁体   English   中英

限制Python VM内存

[英]Limit Python VM memory

我正在尝试找到一种方法来限制Python VM可用的内存,就像Java VM中的选项“ -Xmx”一样。 (这个想法是为了能够处理MemoryError异常)

我不确定该选项是否存在,但是可能存在使用操作系统命令“隔离”进程及其内存的解决方案。

谢谢。

在Linux上,我正在使用资源模块:

import resource
resource.setrlimit(resource.RLIMIT_AS, (megs * 1048576L, -1L))

在* nix上,您可以使用ulimit命令,特别是-m(最大内存大小)和-v(虚拟内存)。

不要在此浪费任何时间。

相反,如果要使用MemoryError异常,请创建一个隔离对象构造的设计,以便对其进行测试。

代替这个

for i in range(1000000000000000000000):
    try:
        y = AnotherClass()
    except MemoryError:
        # the thing we wanted to test

考虑一下。

for i in range(1000000000000000000000):
    try:
        y = makeAnotherClass()
    except MemoryError:
        # the thing we wanted to test

这需要对设计进行一点补充。

class AnotherClass( object ):
    def __init__( self, *args, **kw ):
    blah blah blah

def makeAnotherClass( *args, **kw ):
    return AnotherClass( *args, **kw )

从长远来看,额外的功能被证明是一种很好的设计模式。 这是一个Factory ,您经常需要类似的东西。

然后,您可以将makeAnotherClass替换为类似的内容。

class Maker( object ):
    def __init__( self, count= 12 ):
        self.count= count
    def __call__( self, *args, **kw ):
        if self.count == 0:
            raise MemoryError
        self.count -= 1
        return AnotherClass( *args, **kw )
 makeAnotherClass= Maker( count=12 )

此版本将引发异常,而您不必以任何晦涩,无法支持,复杂或不可思议的方式限制内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM