Python - Infinite while loop, break on user input
Question: I have an infinite while loop that I want to break out of when the user
presses a key. Usually I use `raw_input` to get the user's response; however,
I need `raw_input` to not wait for the response. I want something like this:

    
    
    print 'Press enter to continue.'
    while True:
        # Do stuff
        #
        # User pressed enter, break out of loop
    

This should be a simple, but I can't seem to figure it out. I'm leaning
towards a solution using threading, but I would rather not have to do that.
How can I accomplish this?


Answer: You can use non-blocking read from stdin:

    
    
    import sys
    import os
    import fcntl
    import time
    
    fl = fcntl.fcntl(sys.stdin.fileno(), fcntl.F_GETFL)
    fcntl.fcntl(sys.stdin.fileno(), fcntl.F_SETFL, fl | os.O_NONBLOCK)
    while True:
        print("Waiting for user input")
        try:
            stdin = sys.stdin.read()
            if "\n" in stdin or "\r" in stdin:
                break
        except IOError:
            pass
        time.sleep(1)
    

