私は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
型チェックが必要ですか?
ありがとうございます。私はupvoteすることはできませんが、私は受け入れた。 –