2

現在、私はPythonos.system(cmd)を使用して日常業務を行っています。

ここに 1 つの状況があります。cmd が終了するまでに 5 ~ 6 分かかります。この cmd を手動で実行すると動作しますが、に入れるとos.system(cmd)os.system(cmd)cmd がまだ終了していないときに自動的に終了します。

だから私の質問は次のとおりです:この問題を処理する方法、タイムアウト値を設定する方法、またはこのジョブを終了するためのより良い方法はありますか?

前もって感謝します!

4

1 に答える 1

3

subprocessモジュールを試しましたか?os.system他の古いos方法の中で置き換えるために追加されました。以下は、ドキュメントからほぼ直接です。

import os
import subprocess

proc = subprocess.Popen(cmd, shell=True)
pid, sts = os.waitpid(proc.pid, 0)

# you may check on this process later and kill it if it's taking too long
if proc.poll() in [whatever, ...]:
    os.kill(proc.pid)

または、プロセスが終了する理由をデバッグしようとしている場合:

import subprocess
import sys

try:
    retcode = subprocess.call(cmd, shell=True)
    if retcode < 0:
        print >>sys.stderr, "Child was terminated by signal", -retcode
    else:
        print >>sys.stderr, "Child returned", retcode
except OSError, e:
    print >>sys.stderr, "Execution failed:", e
于 2012-04-15T09:59:34.943 に答える