How to determine if printing is being a bottleneck in my code?

rusi rustompmody at
Wed Dec 5 03:49:02 CET 2012

On Dec 5, 7:36 am, Roy Smith <r... at> wrote:
> In article <29c74a30-f017-44b5-8a3d-a3c0d659277d at>,
>  SherjilOzair <sherjiloz... at> wrote:
> > Hello list,
> > When it comes to printing things while some computation is being done, there
> > are 2 extremes.
> > 1. printing speed is slower than data-to-print generation speed. In this
> > case, printing is a bottleneck. Examples: "for i in xrange(2**30): print i".
> > Without the print, this code would be much faster.
> > 2. data-to-print generation speed is slower than printing speed. So, this
> > case, printing does now slow you down much. Example: for m in matrices: print
> > m.inverse() # inverse is a time-taking function
> > These two cases are pretty easy. But, my question is, how to draw the line?
> > How do I know that print is slowing me down, and I should probably remove
> > some of them? Is there a scientific way to do this, rather than just
> > intuition and guesswork?
> > I can clarify, if needed.
> > Thanks,
> > Sherjil Ozair
> The profiler ( is your
> friend.

One added caveat: When 'printing' is the bottleneck it can be
- in the actual disk/console/network I/O
- in the str/repr builtin/customized that precedes it

[Or both of course]

So after you identify printing as the bottleneck, it may be worthwhile
to print to a dummy device.
On Unix one usually uses /dev/null for this but whether that will help
clarify or muddy the picture I am not sure (Whats the overhead to
writing to null?)
A more internal-to-python method may be to replace the print with a
str/repr assigned to say a global variable

More information about the Python-list mailing list