In : def ff():
...: print '(computing)'
...: return 123
In : ff()
This does not occur in standard ipython.
Only tested on OSX.
flush stdout/stderr on displayhook
This helps stream output arrive before pyout.
I see the same thing. I swear we keep fixing this, and it keeps coming back.
It's not necessarily incorrect that the 123 is coming before the printed message, because when print text actually gets drawn is controlled by sys.stdout.flush, so unless you are calling flush yourself, such things are not technically reliable (though they tend to be consistent within a given environment). What is definitely incorrect is that stdout content should never show up on the same line as pyout.
If we add sys.stdout.flush() to the zmq.displayhook prior to send, then it will behave as you are expecting, so we should probably do that (see PR #782).