Tempo di esecuzione di un'istanza subprocess.Popen
-
05-07-2019 - |
Domanda
Esiste un modo semplice per scoprire il tempo di esecuzione corrente (reale o della CPU) di un sottoprocesso. Istanza aperta?
Soluzione
No, ma puoi semplicemente sottoclassare ed estendere la classe Popen per memorizzare l'ora in cui è stata creata.
Altri suggerimenti
Non in modo indipendente dalla piattaforma. Su Linux, puoi leggere /proc/<pid>/stat
, in particolare le colonne utime, stime e starttime (come descritto in proc (5) ).
Su un computer Windows, puoi usare le API win32 insieme a proc.pid, in questo modo:
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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow