Windowsのtime.clock()は、最初に呼び出されたときにタイマーを開始し、その後の最初の呼び出しからの経過時間を返します。時計を再開する唯一の方法は、新しいプロセスを開始することだと読みました。
スレッドを開始して強制終了すると、time.clock()も再起動することになっていますか?現在は機能していないようです。そうでない場合、実行可能ファイル全体を再起動する唯一の解決策ですか?
スレッドはプロセスではないので、違います。(マイナーな点として、Pythonでスレッドを強制終了することはできず、終了するように要求することしかできません。他の手段でスレッドを強制終了すると、そのような手段が存在する場合でも、Pythonが悪い状態になる可能性があります。)
問題は、なぜタイマーをリセットしたいのか、そしてなぜを使用しているのかということですtime.clock()
。適切ではないほど高い粒度で2つのポイント間の経過時間を気にする場合time.time()
は、2番目のポイントから最初のポイントを差し引くだけです。リセットは必要ありません。とは対照的に、すべてのプラットフォームで同じように機能するためtime.time()
、粒度のわずかな違いを本当に気にしない限り、使用することをお勧めします。time.time()
time.clock()
クロックが必要な場合はスレッドを離しておくと、2番目のクロックのフロートが大きいという理由だけで(ほとんど知覚できない違い)、精度が高いクロックをリセットできます。time.clock()
これtime.time()
により、コードの実行中に経過した時間を測定できます。これを試すことができます:
t0 = time.clock()
... do something
print('Running time:', time.clock()-t0)
Yoは、このための関数装飾を試すこともできます。
def duration(code):
def f(*args):
t0 = time.clock()
bar = code(*args)
print('Running time:', time.clock()-t0)
return bar
return f
この後、デコレータを使用して関数を定義できます。
@duration
def myFun(*args):
... do something
または、デコレータを使用して関数を呼び出すだけです。
duration(myFun)(*args)