Я запускаю python 3.4.3. У меня есть подпроцесс, который может длиться долго или создавать слишком большие файлы. У меня есть этот код.Python3: код исключения или возврата при превышении предела ресурса?
def setlimits():
if DEBUG:
print("Setting resource limit in child (pid {0})".format(os.getpid()))
resource.setrlimit(resource.RLIMIT_CPU, (.05, .05)) # CPU time in secs
resource.setrlimit(resource.RLIMIT_FSIZE, (1000000, 1000000)) # file size
resource.setrlimit(resource.RLIMIT_NOFILE, (20, 20)) # Number open files
Затем я вызываю подпроцесс (внутри большей процедуры) с помощью этого кода.
rc = None
try:
rc = subprocess.call(["potentially long-running command"],shell=True, preexec_fn=setlimits)
except Exception as err:
print("Exception happened")
rc = -1
print("rc = {0}".format(str(rc)))
Когда я кормлю его процессом, который длится долго, он не дает мне исключения. (Я ожидал, что OSError будет основан на документации по ресурсам.) Это дает мне rc = 137.
Любая идея, если это задокументировано? Я, конечно, хотел бы знать, что я рассмотрел все случаи; мне нужна проверка if rc>128
?
спасибо. Я не могу повышать, но я согласился. –