import readline
import threading
PROMPT = '> '

def interrupt():
    print()
print('Interrupting cow -- moo!')
print(PROMPT, readline.get_line_buffer(), sep='', end='')

def cli():
    while True:
        cli = str(input(PROMPT))
if __name__ == '__main__':
    threading.Thread(target=cli).start()
threading.Timer(2, interrupt).start()
Как реализовать python REPL, который хорошо обрабатывает асинхронный вывод?