2つ目はraw_input()を使用して入力を待っているので、ループを独立させようとしています。これを行うために、私はこれを行う最善の方法がマルチスレッドであることを発見しました。それがどのように機能するかを理解しようとしています。私はこれを書いた:見て期待I`d何マルチスレッドの導入 - 一度に2つのループを実行する
from threading import Thread
import time
def loopA():
while True:
print "1"
time.sleep(1)
def loopB():
while True:
print "2"
time.sleep(1)
threadA = Thread(target = loopA)
threadB = Thread(target = loopB)
threadA.run()
threadB.run()
threadA.join()
threadB.join()
はシェルに印刷されている1Sと2Sの行ですが、それがないすべては1秒だけの行です。 2番目のスレッドにも関与するにはどうすればいいですか?
編集:OKので、私は移動している:
from threading import Thread
import time
def loopA():
while True:
print "1"
time.sleep(1)
if __name__ == "__main__":
Thread(target = loopA).start()
while True:
n = raw_input("enter here:")
print n
私が今したいことは1度も繰り返し印刷されている、と私は何かを書くとリターンを打つたび、それだけで印刷されるはずですが、 1秒のループは決して止めてはいけません。
あなたの2番目のコードは私のために働く...何をしていますか? – Aaron
スレッドは、同期化されていないリソース、特にコンソールのために競合しています。 loopAのループをsleep10に設定した場合は、「12345」と入力してプリントを待ってから「67890」と入力し、raw_inputは「67890」となります。 printステートメントは、コンソールがすべてを破棄してraw_inputでやり直すようにしました。 –
2番目のコード:入力を書き込んでいても、まだreturnを押さなかったとしても、1を1秒ごとに印刷します。入力はプロセスを停止し、私が戻り値を返すまで待機します。ループと一致しないようにします。 –