Для получения случайного целочисленного значения между 1 и N (включительно), можно использовать следующее.
CInt(Math.Ceiling(Rnd() * n)) + 1
В * 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 )
Эта версия вызовет исключение без вашего участия ограничивать память любым неясным, неподъемным, сложным или магическим способом.