私はPythonでスレッドするのが初めてです。私はすべてのn秒の機能を実行すると、これは私が出会ったものです:print_hello()
が呼び出されたときにthreading.timerはどのようにPythonで動作しますか
def print_hello():
threading.Timer(5.0, print_hello).start()
print "hello"
print_hello()
私の質問は、新しいスレッドを5秒ごとに作成されますか?
私はPythonでスレッドするのが初めてです。私はすべてのn秒の機能を実行すると、これは私が出会ったものです:print_hello()
が呼び出されたときにthreading.timerはどのようにPythonで動作しますか
def print_hello():
threading.Timer(5.0, print_hello).start()
print "hello"
print_hello()
私の質問は、新しいスレッドを5秒ごとに作成されますか?
Timer
はスレッドです。 Timer()
をインスタンス化するときに作成されます。そのスレッドは、与えられた時間だけ待って関数を呼び出します。この関数は新しいタイマーを作成するので、5秒ごとに呼び出されます。
コードのインデントが少ないと、質問をよく理解するのに役立ちます。
フォーマットされたコードは:あなたはすべての新しいスレッド呼び出しで再帰的に呼び出しているよう
from threading import Timer
def print_hello():
Timer(5.0,print_hello,[]).start()
print "Hello"
print_hello()
このコードは、5秒ごとに新しいスレッドを産卵作品。
インデントのおかげです。私はstackoverflowがどのように動作しているか、フォローアップの質問をすることができるかどうかはわかりません。しかし、私は新しいスレッドを作成せずに同じことを達成できますか? –
はい..ここでコメントに続けたり、元の投稿の質問を編集したりすることができます:PS:OK私はこれを得ました..しかし、ここにはまっています.. –
そしてあなたはいつもあなたの質問に答える応答をupvoteすることができます –
同じスレッドは使用されません。 –
@VivekKumar - いいえ、タイマーイベントごとに新しいスレッドが作成されます。 'Timer'は' Thread'のサブクラスです。 – tdelaney
@tdelaney Ohk。私はhttps://docs.python.org/2/library/threading.html#threading.Timerを見て、繰り返し実行するその単一のスレッドを推定した –