【发布时间】:2017-05-04 08:24:48
【问题描述】:
我有以下代码,它可以让我同时打印和接收键盘输入:
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() 擦除?
【问题讨论】:
-
你说的是印刷品'Printing'吗?因为,如果没有最后一个 while 循环,代码似乎可以正常工作!
-
它说“响应是 b”的地方应该说“响应是 ab”,因为我同时按下了 a 和 b,但 a 被打印擦除了。我现在意识到值得一提的是,我在 PyCharm 中运行它,并且一个单独的控制台窗口似乎可能会产生不同的结果。
-
我现在发现它肯定与 PyCharm 控制台有关。
-
可能是,我尝试了 python 控制台,它按预期工作!
标签: multithreading python-3.x input printing pycharm