を実行してきた>時間は、私は一度に数時間までのために実行されるループを持っています。私はそれが一定の間隔でどのくらいの間それを教えてもらえますか?のpython - whileループは
ただ、一般的な...質問
EDIT:それは順列を実行whileループですので、私はそれが10秒ごとに実行している時間を印刷することができますか?
を実行してきた>時間は、私は一度に数時間までのために実行されるループを持っています。私はそれが一定の間隔でどのくらいの間それを教えてもらえますか?のpython - whileループは
ただ、一般的な...質問
EDIT:それは順列を実行whileループですので、私はそれが10秒ごとに実行している時間を印刷することができますか?
代わりのループごとに時間をチェックし、あなたは
import time
from threading import Timer
def timeout_handler(timeout=10):
print time.time()
timer = Timer(timeout, timeout_handler)
timer.start()
timeout_handler()
while True:
print "loop"
time.sleep(1)
time.asctime()を使用してこれを行うには非常にハック方法があります。 whileループに入る前とループ自体のどこかにasctimeを格納します。保存された時間と現在の時間との間の時間差を計算し、その差が10秒であれば、保存された時間を現在の時間に更新し、それが実行されていることを印刷する。
しかし、それはそれは、いくつかのツイストと退屈な数学を必要としてそれを行うには非常にハック方法です。
あなたの目的は、特定のアルゴリズムの実行時間を確認することであるならば、あなたはこれが
述べたようにを支援
希望timeit
モジュールを使用した方がいいでしょうが、これは厄介なハックの少しありますそれは、繰り返しのたびに時間をチェックする必要があるからです。それが機能するためには、わずかな時間だけ実行されるタスクが必要です。ループが1分ごとに繰り返し実行される場合は、10秒ごとに出力されません。中断したい場合は、マルチスレッド、またはlinux/mac/unixシグナルを使用している方がよいでしょう。あなたのプラットフォームは何ですか?
import time
timeout = 10
first_time = time.time()
last_time = first_time
while(True):
pass #do something here
new_time = time.time()
if new_time - last_time > timeout:
last_time = new_time
print "Its been %f seconds" % (new_time - first_time)
出力:
Its been 10.016000 seconds
Its been 20.031000 seconds
Its been 30.047000 seconds
がohmygosh私はあなたを愛しているけれど、 'pass'は何をするのでしょうTimerオブジェクトを使用できますか?私はそれの代わりに何かを置くのですか? – tekknolagi
'pass'はnull演算ですが、これは単なるプレースホルダであり、まったく何もしません([実際には(http://docs.python.org/reference/simple_stmts.html#pass)])。それを自分のコードに置き換えてください。 – fmark
ええと、私は 'Timer'オブジェクトについて知らなかったので、以下の答えでそれを使うことに変えてみることをお勧めします。 – fmark
+1私の答えよりもかなり良い、Pythonはそのような電池が含まれていることを愛する。 – fmark