0

我需要一些关于终止后一个进程的信息。

像这样utimeVMPeak/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

但是 PythonPopen.wait()发布了PID,所以我会得到:

No such file or directory

我可以在终止后得到它,还是等待终止而不释放PID?(我的意思是等待终止而不调用wait(),这将释放所有资源。)

如果你能帮助我,我将不胜感激。谢谢!

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 回答