Python3:超出资源限制时出现异常还是返回代码?

2021-04-12 00:51:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行的是python3.4.3。我有一个子进程可能运行很长时间,或者生成的文件太大。我有这个密码。在

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

然后我用这个代码调用子进程(在一个更大的例程中)。在

^{pr2}$

当我给它输入一个长时间运行的进程时,它不会给我一个异常。(根据资源文档,我预期是OSError。)它给出了rc=137。在

你知道这些记录在哪里吗?我当然想知道我已经涵盖了所有的案例;我需要if rc>128类型的检查吗?在

1条回答
网友
1楼 ·

137是表示进程被终止的reserved exit code,等于128+9(其中9代表信号9或SIGKILL)。这很可能发生在进程达到其CPU硬限制并被内核终止时。在

如果被调用进程返回非零退出状态,^{}不会引发异常。如果您想要这种行为,最好使用^{}^{},这将在非零退出状态下引发^{}。在

相关问题