[Python-Dev] cProfile prints to stdout?

Guido van Rossum gvanrossum at gmail.com
Sun Feb 26 18:12:25 CET 2006


On 2/25/06, skip at pobox.com <skip at pobox.com> wrote:
>
>     >> It is currently impossible to separate profile output from the
>     >> program's output.
>
>     Guido> It is if you use the "advanced" use of the profiler -- the
>     Guido> profiling run just saves the profiling data to a file, and the
>     Guido> pstats module invoked separately prints the output.
>
> Sure, but then it's not "simple".  Your original example was "... > file".
> I'd like it to be (nearly) as easy to do it right yet keep it simple.

OK. I believe the default should be stdout though, and the conveniece
method print_stats() in profile.py should be the only place that
references stderr. The smallest code mod would be to redirect stdout
temporarily inside print_stats(); but I won't complain if you're more
ambitious and modify pstats.py.

    def print_stats(self, sort=-1, stream=None):
        import pstats
        if stream is None:
            stream = sys.stderr
        save = sys.stdout
        try:
            if stream is not None:
                sys.stdout = stream
            pstats.Stats(self).strip_dirs().sort_stats(sort). \
                  print_stats()
        finally:
            sys.stdout = save

--
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list