Python:raw_input并在线程中打印
作者:互联网
我有一个线程可以在控制台上打印一些文本,主程序有一个raw_input来控制线程.
我的问题是,当我写作和线程时,我得到这样的东西:
-->whatiwWHATTHETHREADWRITErite
但我想得到一些像这样的东西
WHATTHETHREADWRITE
-->whatiwrite
谢谢!
解决方法:
您必须将输入与线程输出同步,以防止它们同时发生.
您可以修改主循环,如:
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')
简而言之,当您按Enter键时,您将停止该线程并进入“输入模式”.
更具体地说,每次按Enter键,您将:
>等待锁定可用
>获得锁定
>打印 – >并等待你的命令
>插入您的命令
>将该命令发送给线程
>释放锁定
因此,只有当您处于“输入模式”时尝试打印时,您的线程才会被停止,
在你的终端你会得到类似的东西:
some previous output
---> your input
THE THREAD OUTPUT
标签:raw-input,python,multithreading,printing 来源: https://codeday.me/bug/20190902/1791911.html