当另一个线程调用print时,Python输入被清除

时间:2017-05-04 08:24:49

标签: multithreading python-3.x input printing pycharm

我有以下代码,可以让我同时打印和接收键盘输入:

import time
from threading import Thread

def InpThread():
    while True:
        response = input("Type in here\r\n")
        print("Response is " + response)

tinp = Thread(target=InpThread)
tinp.start()

while True:
    time.sleep(1)
    print("Printing")

我已经把它简化为一个简单的案例,我的案例有其他的东西,但这个例子对我来说这个问题是可以重现的。 上周,我没有输入input()的问题,给我输入所有字符直到那一点。现在,看起来在另一个线程中每次调用print()都会擦除所有字符,所以除了我正确的时间并且速度非常快之外,我主要是留下一个空输入。

Printing
aPrinting
b
Response is b
Type in here
Printing

我正在使用Python解释器3.5.2。

在上周我的代码中看不到任何变化,我能想到的是Windows已更新,或者可能是python模块。

如何通过调用print()来保留所有输入而不是擦除?

1 个答案:

答案 0 :(得分:0)

您应该在打印功能上使用lock

检查This answer。它会创建一个锁定对象,稍后再使用它来打印。