0

終了後の 1つの子プロセスに関する情報が必要です。

次のようにutime、次VMPeak/procように:

proc.wait()
with open('/proc/%d/stat' % proc.pid, "r") as f:
    stat = str(f.read()).strip().split()
    # 14th column is utime, 15th column is stime (man 5 proc)                  
    cpu_time = int(stat[14]) + int(stat[15])
    return cpu_time

しかし、PythonがPopen.wait()リリースされPIDたので、次のようになります。

No such file or directory

終了後にそれを取得できますか、または解放せずに終了を待つことはできますか? (すべてのリソースを解放する呼び出しなしで終了を待つことを意味します。)PIDwait()

助けていただければ幸いです。ありがとう!

4

1 に答える 1

1

からの引用man 5 proc

/proc/[pid]
実行中のプロセス ごとに数値のサブディレクトリがあります。サブディレクトリは、プロセス ID によって名前が付けられます。

終了したプロセスは実行されなくなり、その/proc/[pid]ディレクトリ (statファイルを含む) は存在しなくなります

そこにある場合は、呼び出す前にproc.wait()PID を変数に格納するだけです。

pid = proc.pid
proc.wait()
with open('/proc/%d/stat' % pid, "r") as f:

「終了直前」イベントはありません。subprocess待ってから、終了コードを取得します。

os.wait4()代わりに、次の方法で独自の待機を行うことができます。

pid, status, resources = os.wait4(proc.pid, 0)
cpu_time = resources.ru_utime + resources.ru_stime

resourcesは名前付きタプルresource.getrusage()です。サポートされる名前のリストについては、 を参照してください。.ru_utimeとはどちら.ru_stimeも浮動小数点値です。

于 2013-07-28T07:56:39.503 に答える