Я разрабатываю инструмент для стресс-тестирования.Его цель - использовать всю свободную память.Моя проблема состоит в том, чтобы постоянно использовать всю свободную память, даже если некоторая ее часть была освобождена во время выполнения скрипта и особенно после перехвата MemoryError.
Я пытался обработать исключение «MemoryError» с помощью операторов pass или continue, но оно выигралоне поможетЕсли происходит MemoryError, скрипт не использует вновь освобожденную память.Возможно, это происходит из-за некоторых ограничений ОС.
def mem_cons(x):
timestamp()
a = []
idx = 0
appender = a.append
MEGA_STR = 'F' * (10 ** 4 * x)
try:
while True:
try:
idx += 1
if idx > 10000:
if 'kill' in flag:
print("")
timestamp()
print("Memory consumption was remotely stopped.\nPlease use \'ctrl+c\' command to exit")
a = []
timestamp()
print("Memory was cleared")
break
idx = 0
appender(MEGA_STR)
except MemoryError:
continue
timestamp()
except KeyboardInterrupt:
print("")
timestamp()
print("Program has been stopped")
Сценарий:
- Сценарий потребляет память от 20% до 100%
- Преобразование MemoryException
- Некоторая память была освобождена вручную, скажем - 5.1%
Фактический результат:
После этого уровень потребления всей памяти все еще остается на уровне 94,9% и не растет(как мы видим на график - после красной линии)
Ожидаемый результат:
Скрипт продолжает потреблять освобожденную вручную память и удерживает ееуровень на 100% после того, как MemoryException был пойман.
Заранее спасибо!