subprocess.Popen实例的运行时间

1 投票
3 回答
1525 浏览
提问于 2025-04-15 15:17

有没有简单的方法可以查看一个subprocess.Popen实例的当前运行时间(真实时间或CPU时间)?

3 个回答

0

这不是一种可以在不同平台上都适用的方法。在Linux系统中,你可以查看一个叫做 /proc/<pid>/stat 的文件,特别是里面的几个数据列:utime、stime和starttime(具体内容可以参考proc(5))。

0

在Windows电脑上,你可以使用win32的API和proc.pid,方法如下:

import subprocess

def print_times(proc):
    import win32process, win32api, win32con
    hproc = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION, False, proc.pid)
    times = win32process.GetProcessTimes(hproc)
    win32api.CloseHandle(hproc)
    # GetProcessTimes returns values in 100-ns intervals
    print 'kernel', times['KernelTime'] * 1e-7
    print 'user', times['UserTime'] * 1e-7

proc = subprocess.Popen('cmd /c sleep 1')
proc.wait()
print_times(proc)
1

不可以,不过你可以简单地创建一个新的类,继承自Popen类,这样就能记录它被创建的时间了。

撰写回答