[英]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.