Один из способов получить небуферизованный вывод - использовать sys.stderr
вместо sys.stdout
или просто вызвать sys.stdout.flush()
, чтобы явно вызвать запись.
Вы можете легко перенаправить все напечатанное, выполнив:
import sys; sys.stdout = sys.stderr
print "Hello World!"
Или перенаправить только для определенного print
оператора:
print >>sys.stderr, "Hello World!"
Чтобы сбросить стандартный вывод, вы можете просто сделать:
sys.stdout = sys.__stdout__