Pergunta

Existe uma maneira fácil de descobrir a atual (real ou CPU) tempo de execução de uma instância subprocess.Popen?

Foi útil?

Solução

Não, mas você pode simplesmente subclasse e estender a classe Popen para armazenar o momento em que foi criado.

Outras dicas

Não de uma forma independente de plataforma. No Linux, você pode ler /proc/<pid>/stat, em particular as colunas utime, stime e starttime (como descrito em proc (5) ).

Em uma máquina Windows, você pode usar win32 APIs juntamente com proc.pid, assim:

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top