Есть ли способ установить максимально допустимое использование ОЗУ в интерактивном сеансе PyDev? Мой компьютер имеет тенденцию висеть, если я случайно нахожу команду, которая приводит к разбуханию ОЗУ.Установка максимального использования ОЗУ в интерактивном сеансе в Pydev
3
A
ответ
3
В Unix вы можете ограничить количество ресурсов (таких как память), доступных для процесса, используя resource.setrlimit. Например, чтобы ограничить максимальную площадь адресного пространства 10 ** 6 байт:
import sys
import resource
resource.setrlimit(resource.RLIMIT_AS, (10 ** 6, 10 ** 6))
memory_hog = {}
try:
for x in range(10000):
memory_hog[str(x)] = 'The sky is so blue'
except MemoryError as err:
sys.exit('memory exceeded')
# memory exceeded
С вызовом resource.setrlimit
, MemoryError
поднимается, потому что memory_hog
занимает слишком много места. Без вызова resource.setrlimit
программа должна завершиться нормально (на типичном оборудовании).
Вы также можете ограничить доступное с общее процессорное время:
resource.setrlimit(resource.RLIMIT_CPU, (n, n))
где n
дается в секундах. Например,
In [1]: import math
In [2]: x = math.factorial(40000)
In [3]: import resource
In [4]: resource.setrlimit(resource.RLIMIT_CPU, (2, 2))
In [5]: x = math.factorial(40000)
Process Python killed
Процесс был убит, так как он не может вычислить 40000!
в течение 2 секунд.
Обратите внимание, что обе эти команды влияют на весь сеанс PyDev, а не только на одну команду.
К сожалению, это не работает на моей машине, так как я нахожусь в Windows. Есть ли решение для Windows? – Ginger
Извините, я не знаю эквивалентного решения для Windows. – unutbu