我运行的是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
类型的检查吗?在
137是表示进程被终止的reserved exit code,等于128+9(其中9代表信号9或SIGKILL)。这很可能发生在进程达到其CPU硬限制并被内核终止时。在
如果被调用进程返回非零退出状态,^{} 不会引发异常。如果您想要这种行为,最好使用^{} 或^{} ,这将在非零退出状态下引发^{} 。在
相关问题 更多 >
编程相关推荐