我有一个线程可以在控制台上打印一些文本,主程序有一个raw_input
控制线程。
我的问题是当我在写作时,线程也得到了这样的结果:
-->whatiwWHATTHETHREADWRITErite
但我想得到这样的东西
WHATTHETHREADWRITE
-->whatiwrite
谢谢!
我有一个线程可以在控制台上打印一些文本,主程序有一个raw_input
控制线程。
我的问题是当我在写作时,线程也得到了这样的结果:
-->whatiwWHATTHETHREADWRITErite
但我想得到这样的东西
WHATTHETHREADWRITE
-->whatiwrite
谢谢!
您可以创建一个锁,并在持有锁的同时执行所有输入和输出:
import threading
stdout_lock = threading.Lock()
with stdout_lock:
r = raw_input()
with stdout_lock:
print "something"
您必须将输入与线程输出同步,以防止它们同时发生。
您可以修改主循环,如:
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