我有一个线程可以在控制台上打印一些文本,主程序有一个raw_input
来控制线程。
我的问题是,当我写作时,线程也是这样的:
-->whatiwWHATTHETHREADWRITErite
但我希望得到像这样的东西
WHATTHETHREADWRITE
-->whatiwrite
谢谢!
答案 0 :(得分:3)
你可以创建一个锁,并在持有锁时执行所有输入和输出:
import threading
stdout_lock = threading.Lock()
with stdout_lock:
r = raw_input()
with stdout_lock:
print "something"
答案 1 :(得分:2)
您必须将输入与线程输出同步,以防止它们同时发生。
您可以修改主循环,如:
lock = threading.lock()
while 1:
raw_input() # Waiting for you to press Enter
with lock:
r = raw_input('--> ')
# send your command to the thread
然后锁定后台线程打印:
def worker(lock, ...):
[...]
with lock:
print('what the thread write')
简而言之,当您Press Enter
时,您将停止该主题并进入“输入模式”。
更具体地说,每当你Press Enter
时,你会:
-->
并等待您的命令因此,只有在您处于“输入模式”时尝试打印时,您的线程才会停止,
在你的终端你会得到类似的东西:
some previous output
---> your input
THE THREAD OUTPUT
答案 2 :(得分:0)
使用类似curses的内容将后台任务输出写入屏幕的一半,将输入/控制内容写入另一半。
你也可以在大多数终端上摆弄ANSI escape codes。