Я пытаюсь позволить пользователю вводить команды на консоли с помощью raw_input(), это отлично работает. Проблема в том, что у меня есть фоновые потоки, которые иногда выводят информацию о журнале на экран, и когда они это делают, они беспорядочно вводят приглашение ввода (поскольку вывод идет туда, где курсор находится в данный момент).
Это небольшая программа Python, которая иллюстрирует, что я имею в виду.
#!/usr/bin/env python
import threading
import time
def message_loop():
while True:
time.sleep(1)
print "Hello World"
thread = threading.Thread(target = message_loop)
thread.start()
while True:
input = raw_input("Prompt> ")
print "You typed", input
Это пример того, как он мог выглядеть при запуске:
Prompt> Hello World
Hello World
Hello World
Hello World
test
You typed test
Prompt> Hello World
Hello World
Hello World
hellHello World
o
You typed hello
Prompt> Hello World
Hello World
Hello World
Hello World
Я хочу, чтобы приглашение перемещалось вместе с выходом из потока. Например:
Hello World
Hello World
Prompt> test
You typed test
Hello World
Hello World
Hello World
Hello World
Hello World
Prompt> hello
You typed hello
Hello World
Hello World
Hello World
Hello World
Prompt>
Любые идеи о том, как достичь этого, не прибегая к уродливым взломам?:)