编程语言
首页 > 编程语言> > Python:raw_input并在线程中打印

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