2017-05-04 9 views
0

を印刷するときにクリアされている私持っている私に印刷をすることができ、同時にキーボードからの入力を受け付け、次のコード、:、私は単純なケースにこれを削ってきたPythonの入力は、別のスレッドの呼び出しが

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()の呼び出しでそれを消去しない方法はありますか?

+0

あなたは「プリント」プリントについてお話していますか?なぜなら、最後のwhileループがなければ、コードは正常に動作しているようです。 –

+0

「レスポンスがbです」と表示されているのは、aとbの両方を押したので、「レスポンスはabです」と表示されるはずですが、aはプリントで消去されました。 私はこれをPyCharmの中から実行していることに言及する価値があるかもしれないことに気付きました。別のコンソールウィンドウが表示され、異なる結果が生じることがあります。 –

+0

私は、これがPyCharmコンソールと何か関係があることを発見しました。 –

答えて

0

おそらくlockを印刷機能に使用する必要があります。

チェックThis answer。ロックオブジェクトを作成し、後でそれを使用して印刷します。

関連する問題