Я не знаю, можете ли вы сделать это вообще, но в Linux вы можете просто проанализировать /proc/<PID>/stat
, чтобы найти первые четыре значения, которые вы получите из os.times
для любого процесса. Например:
import sys
import os
if not len(sys.argv) == 2:
print >> sys.stderr, "Usage: %s <PID>" % (sys.argv[0])
sys.exit(1)
pid = int(sys.argv[1])
hz = os.sysconf(os.sysconf_names['SC_CLK_TCK'])
with open("/proc/%d/stat" % (pid,)) as fp:
fields = fp.read().split(' ')[13:17]
utime, stime, cutime, cstime = [ (float(f) / hz) for f in fields ]
print "utime in clock ticks:", utime
print "stime in clock ticks:", stime
print "cutime in clock ticks:", cutime
print "cstime in clock ticks:", cstime
Предположительно, у вас есть идентификаторы дочерних процессов, которые вас интересуют.
Я узнал, как получить значение sysconf(_SC_CLK_TCK)
из этого вопроса: Python: Как получить количество миллисекунд за секунду , а информация о полях в /proc/<PID>/stat
взята из proc(5)
справочная страница.