clocking subprocesses

Karthik Gurusamy kar1107 at gmail.com
Tue Mar 4 02:09:35 EST 2008


On Mar 3, 9:57 am, barnbu... at gmail.com wrote:
> Hi,
>
> I've seen several threads on this subject, but haven't (yet) run
> across one that answers my specific questions.  This should be really
> easy for someone, so here goes:
>
> I'm running some numerical simulations under Ubuntu, and using Python
> as my scripting language to automatically manage input and output.  I
> need to have a precise performance measurement (CPU time) of how long
> it takes to run my simulations.
>
> Right now I have something like:
>
> stime = time.time()
> subprocess.call(["./mysim","args"])
> ftime = time.time()
> print ftime-stime
>
> However, time.time() only gives wall-clock time, so I'm also measuring
> the time it takes to run other processes running at the same time.
> What I'd rather have is:
>
> stime = time.clock()
> subprocess.call(["./mysim","args"])
> ftime = time.clock()
> print ftime-stime
>
> But this, of course, usually outputs 0, because time.clock() does not
> count the CPU ticks of the subprocess.
>
> So, long story short, I need to get CPU time of something I call using
> subprocess.call().  I don't want to have to profile my code, since it
> will significantly reduce computation time.

Use os.times(). It returns a 5-tuple and what you want is child cpu
times.

times(...)
    times() -> (utime, stime, cutime, cstime, elapsed_time)

    Return a tuple of floating point numbers indicating process times.

cutime+cstime will give you the total CPU used by child (your
simulation).

Karthik




>
> Thanks for the advice.
>
> Kevin




More information about the Python-list mailing list