python time.clock() - スレッドでクロック値をリセットする
質問
Time.clock()が最初に呼び出されたときにTime.clock()がタイマーを「起動」し、その後の最初の電話の呼び出し以来、Elasped Timeを返します。クロックを再起動する唯一の方法は、新しいプロセスを開始することであると読みました。
スレッドを起動して殺害することは、time.clock()も再起動することになっていますか?今は機能していないようです。そうでない場合、実行可能ファイル全体を再起動する唯一のソリューションですか?
解決
スレッドはプロセスではないので、いいえ。 (マイナーなポイントとして、Pythonでスレッドを殺すことはできません。出口するように依頼することしかできません。そのような手段が存在する他の手段を介してスレッドを殺すことは、Pythonを悪い状態に残す可能性があります。)
質問は どうして あなたはタイマーをリセットしたい、そしてあなたが使用している理由 time.clock()
. 。あなたが非常に高い粒状で2つのポイントの間の経過時間を気にするなら time.time()
適切ではありません。2番目のポイントから最初のポイントを差し引くだけです。リセットは必要ありません。使用することをお勧めします time.time()
あなたが本当に粒度におけるそのほんの少しの違いを本当に気にしない限り、 time.time()
すべてのプラットフォームで同じように動作します。 time.clock()
.
他のヒント
時計が必要な場合は、の正確さでリセットできます time.clock()
これはその1つよりもハイガーです time.time()
2番目のフロートのフロートが大きいからといって(ほとんど知覚できない違い)、過去の経過を測定するためにコードを実行している間、これを試すことができます。
t0 = time.clock()
... do something
print('Running time:', time.clock()-t0)
また、これのために関数の装飾を試すこともできます:
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)