[Python-Dev] cProfile prints to stdout? (original) (raw)

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