Skip to content Skip to sidebar Skip to footer

Python Print Function In Real Time

I recently switched OS and am using a newer Python (2.7). On my old system, I used to be able to print instantaneously. For instance, suppose I had a computationally intense for lo

Solution 1:

Try to call flush of stdout after the print

import sys

...
sys.stdout.flush()

Or use a command line option -u which:

Force stdin, stdout and stderr to be totally unbuffered.

Solution 2:

Since Python 3.3, you can simply pass flush=True to the print function.

Solution 3:

Import the new print-as-function as in Python 3.x:

from __future__ import print_function

(put the statement at the top of your script/module)

This allows you to replace the new print function with your own:

def print(s, end='\n', file=sys.stdout):
    file.write(s + end)
    file.flush()

The advantage is that this way your script will work just the same when you upgrade one day to Python 3.x.

Ps1: I did not try it out, but the print-as-function might just flush by default.

PS2: you might also be interested in my progressbar example.

Post a Comment for "Python Print Function In Real Time"