(простите, мой плохой английский, я не родной)
Я пытался использовать ресурсный модуль Python для ограничения дочернего процесса.
Кажется, что установка RLIMIT_CPU может успешно ограничить количество процессоров, нодругие, такие как RLIMIT_RSS, вообще не работали.
Например, я использую следующий скрипт для вызова child.py и устанавливаю лимит RSS равным (1024, 1024):
import os
import sys
import resource
import subprocess
def setlimits():
resource.setrlimit(resource.RLIMIT_RSS, (1024, 1024))
p = subprocess.Popen(["./child.py"], preexec_fn=setlimits)
print(p.wait())
child.py:
#!/usr/bin/env python3
import resource
print("RSS limit: ", resource.getrlimit(resource.RLIMIT_RSS))
a=[]
while True:
a.append(1) # deadloop, until eat up memory
Дочерний процесс печатает «Предел RSS: (1024, 1024)», а затем продолжает работать, пока не будет уничтожен.Я вижу, как child.py съедает мою память, но RLIMIT_RSS не работает.
Моя ОС - последняя версия Archlinux (ядро 2.6.39), а Python - версия 3.2.