How to implement a python REPL that nicely handles asynchronous output?

Posted by andy on Stack Overflow See other posts from Stack Overflow or by andy
Published on 2009-01-12T21:11:44Z Indexed on 2010/03/30 7:03 UTC
Read the original article Hit count: 405

Filed under:
|
|

I have a Python-based app that can accept a few commands in a simple read-eval-print-loop. I'm using raw_input('> ') to get the input. On Unix-based systems, I also import readline to make things behave a little better. All this is working fine.

The problem is that there are asynchronous events coming in, and I'd like to print output as soon as they happen. Unfortunately, this makes things look ugly. The "> " string doesn't show up again after the output, and if the user is halfway through typing something, it chops their text in half. It should probably redraw the user's text-in-progress after printing something.

This seems like it must be a solved problem. What's the proper way to do this?

Also note that some of my users are Windows-based.

TIA

Edit: The accepted answer works under Unixy platforms (when the readline module is available), but if anyone knows how to make this work under Windows, it would be much appreciated!

© Stack Overflow or respective owner

Related posts about python

Related posts about repl