Я запускаю Python 2.7 на Linux-машине с 16 ГБ оперативной памяти и 64-разрядной ОС. Питон script, который я написал, может загружать слишком много данных в память, что замедляет работу машины до такой степени, что я больше не могу даже убить процесс.
Пока я могу ограничить память, вызывая:
ulimit -v 12000000
в моей оболочке перед запуском script, я хотел бы включить ограничение в самом script. Всюду, где я смотрел, модуль resource
цитируется как имеющий ту же мощность, что и ulimit
. Но вызов:
import resource
_, hard = resource.getrlimit(resource.RLIMIT_DATA)
resource.setrlimit(resource.RLIMIT_DATA, (12000, hard))
в начале моего script ничего не делает. Даже если значение, равное 12000, никогда не разбивало процесс. Я пробовал то же самое с RLIMIT_STACK
, а также с тем же результатом. Любопытно, вызывая:
import subprocess
subprocess.call('ulimit -v 12000', shell=True)
ничего не делает.
Что я делаю неправильно? Я не нашел реальных примеров использования в Интернете.