hotshot profiler: how to distinguish between cpu time and wait (idle)time?

I

Irmen de Jong

Hi,
when using the hotshot profiler, I can see no difference in the
measurement of a function that is busy eating CPU cycles, and
a function that is blocking/waiting on IO (or sleeping)...

For instance I have this output:

3 function calls in 26.931 CPU seconds

Ordered by: internal time, call count
ncalls tottime percall cumtime percall filename:lineno(function)
1 13.465 13.465 13.465 13.465 testprof.py:5(cpu)
1 13.464 13.464 13.464 13.464 testprof.py:9(sleep)
1 0.002 0.002 26.931 26.931 testprof.py:12(main)
0 0.000 0.000 profile:0(profiler)

My test program (see below) consists of two functions called sequentially:
a cpu() function eating 13+ seconds of CPU cycles when calculating
sha-hashes, and a sleep() function that only has time.sleep(13) in it.

What would be really useful, is that the profiler would show that sleep()
is actually not doing *anything*, while cpu() is doing all the hard work.
I.E.: measure CPU-time, not user-time.

How do I do this? Is this possible? (I'm using Python 2.3.4)

Thanks!!
--Irmen de Jong.

--------------- test program ------------------
import hotshot, hotshot.stats
import time
import sha

def cpu():
for i in range(1000000):
a=sha.sha("abcdefghijklmnopqrstuvwxyz").hexdigest()

def sleep():
time.sleep(13)

def main():
print "cpu..."
cpu()
print "sleep..."
sleep()
print "done"

prof = hotshot.Profile("/tmp/test.prof")
result = prof.runcall(main)
prof.close()
print "PROFILE DONE, result=",result,type(result)
stats = hotshot.stats.load("/tmp/test.prof")
stats.strip_dirs()
stats.sort_stats('time', 'calls')
stats.print_stats(20)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top