python - > время выполнения цикла while
У меня есть цикл, который длится до нескольких часов за раз. как я могу заставить его сказать мне, как долго он был на заданном интервале?
Просто общий...Вопрос
EDIT: это цикл while, который выполняет перестановки, так что можно ли печатать время, которое выполняется каждые 10 секунд?
3 ответов:
Вместо проверки времени на каждом цикле можно использовать объект Timer
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)
Как уже отмечалось, это немного неприятный Хак, поскольку он включает в себя проверку времени каждой итерации. Чтобы он работал, вам нужно иметь задачи, которые выполняются в течение небольшого процента времени ожидания - если цикл повторяется только каждую минуту, он не будет распечатываться каждые десять секунд. Если вы хотите, чтобы вас прервали, вы можете рассмотреть многопоточность, или предпочтительно, если вы находитесь на 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
Есть очень хитрый способ сделать это, используя время.asctime (). Вы сохраняете asctime перед входом в цикл while и где-то в самом цикле. Вычислите разницу во времени между сохраненным временем и текущим временем, и если эта разница составляет 10 секунд, то обновите сохраненное время до текущего времени и распечатайте, что оно было запущено.
Тем не менее, это очень банальный способ сделать это, так как он требует некоторой запутанной и скучной математики.Если ваша цель-проверить время выполнения конкретный алгоритм, тогда вам лучше использовать модуль
timeitНадеюсь, это поможет
Comments