[Tutor] Understanding cProfile output
Steven D'Aprano
steve at pearwood.info
Thu Sep 20 21:56:12 CEST 2012
On 21/09/12 04:58, ranveer raghuwanshi wrote:
> Hi,
>
> I am trying to understand the output of cProfile when run against my python
> code. The code is:
[...]
> What the above code does is it counts the number of prime numbers less than
> 1,00,000.
>
> Now when I profile this code using *python -m cProfile -s time
> countPrime.py. *The output I get is http://sprunge.us/SOEj.
The output is 13 lines. Please don't waste our time, and yours, publishing it
on the web. For trivially small amounts of text like that, just paste it into
the body of your email, like this:
#result9592
90414 function calls in 16.705 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 16.374 16.374 16.705 16.705 countPrime.py:1(<module>)
90407 0.320 0.000 0.320 0.000 {method 'append' of 'list' objects}
2 0.011 0.005 0.011 0.005 {range}
1 0.000 0.000 0.000 0.000 {math.sqrt}
1 0.000 0.000 0.000 0.000 {math.floor}
1 0.000 0.000 0.000 0.000 {len}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
This ensures that:
* even when the pastebin expires, or the website is shut down, the email
archives will include the information necessary to understand your
question
* people who have access to email but not the web (or their web access
is restricted) can still understand your question, or respond
> Now what I
> don't understand is what it means by *tottime=16.374 for function
> countPrime.py:1(<module>). *I understand fine that it took around *0.320s
> for method append.*
>
> So, is 16.374 the total time my scripts takes but according to profiler the
> total time is 16.705.
I'm not entirely sure, I'd need to look at the source code of the profiler,
but I expect that the discrepancy is probably due to the difference between
elapsed wall-clock time and processor time. In other words:
* it took 16.705 seconds of actual, physical time (as measured by a clock
on the wall) to run your script;
* but only 16.374 seconds of that was time spent by the processor actually
executing your code; the other 0.331 was probably taken up by other
processes running on your system, or the operating system itself.
--
Steven
More information about the Tutor
mailing list