У меня есть следующий код в скрипте Python:
def fun():
#Code here
fun()
Я хочу выполнить этот сценарий, а также узнать, сколько времени потребовалось для его выполнения в минутах. Как узнать, сколько времени потребовалось для выполнения этого скрипта? Был бы очень признателен за пример.
python
datetime
execution-time
Джеймс
источник
источник
Ответы:
from datetime import datetime startTime = datetime.now() #do something #Python 2: print datetime.now() - startTime #Python 3: print(datetime.now() - startTime)
источник
datetime.now()
работает, если вы это делаетеfrom datetime import datetime
, а не толькоimport datetime
(только что подтверждено на Python 3.6.4).Вы выполняете сценарий из командной строки в Linux или UNIX? В этом случае вы можете просто использовать
источник
time -p ./script.py
-p
флаг для трубопроводаimport time start = time.time() fun() # python 2 print 'It took', time.time()-start, 'seconds.' # python 3 print('It took', time.time()-start, 'seconds.')
источник
print('It took {0:0.1f} seconds'.format(time.time() - start))
в python 3.x.Я обычно использую
clock()
илиtime()
изtime
библиотеки.clock
измеряет время интерпретатора иtime
измеряет системное время. Дополнительные предостережения можно найти в документации .Например,
def fn(): st = time() dostuff() print 'fn took %.2f seconds' % (time() - st)
Или, в качестве альтернативы, вы можете использовать
timeit
. Я часто использую этотtime
подход из-за того, насколько быстро я могу его обработать, но если вы рассчитываете время для изолированного фрагмента кода, этоtimeit
пригодится.Из документов timeit ,
def test(): "Stupid test function" L = [] for i in range(100): L.append(i) if __name__=='__main__': from timeit import Timer t = Timer("test()", "from __main__ import test") print t.timeit()
Затем, чтобы преобразовать в минуты, вы можете просто разделить его на 60. Если вы хотите, чтобы среда выполнения скрипта была в легко читаемом формате, будь то секунды или дни, вы можете преобразовать в a
timedelta
иstr
it:runtime = time() - st print 'runtime:', timedelta(seconds=runtime)
и это распечатает что-то из формы
[D day[s], ][H]H:MM:SS[.UUUUUU]
. Вы можете ознакомиться с документацией timedelta .И, наконец, если вам действительно нужно профилировать код, Python также делает доступной библиотеку профилей .
источник
import time startTime = time.time() # Your code here ! print ('The script took {0} second !'.format(time.time() - startTime))
Предыдущий код у меня работает без проблем!
источник
import sys import timeit start = timeit.default_timer() #do some nice things... stop = timeit.default_timer() total_time = stop - start # output running time in a nice format. mins, secs = divmod(total_time, 60) hours, mins = divmod(mins, 60) sys.stdout.write("Total running time: %d:%d:%d.\n" % (hours, mins, secs))
источник
Используйте модуль timeit. Это очень просто. Запустите файл example.py, чтобы он был активен в оболочке Python, теперь вы должны иметь возможность вызывать свою функцию в оболочке. Попробуйте, чтобы проверить, работает ли
Хорошо, это работает, теперь импортируйте timeit и настройте таймер
>>>import timeit >>>t = timeit.Timer('example.fun(input)','import example') >>>
Теперь у нас установлен таймер, и мы можем увидеть, сколько времени это займет
>>>t.timeit(number=1) some number here
И вот, он скажет вам, сколько секунд (или меньше) потребовалось для выполнения этой функции. Если это простая функция, вы можете увеличить ее до t.timeit (число = 1000) (или любое число!), А затем разделить ответ на число, чтобы получить среднее значение.
Надеюсь, это поможет.
источник
используйте пакеты time и datetime.
если кто-то хочет выполнить этот скрипт, а также узнать, сколько времени потребовалось для выполнения в минутах
import time from time import strftime from datetime import datetime from time import gmtime def start_time_(): #import time start_time = time.time() return(start_time) def end_time_(): #import time end_time = time.time() return(end_time) def Execution_time(start_time_,end_time_): #import time #from time import strftime #from datetime import datetime #from time import gmtime return(strftime("%H:%M:%S",gmtime(int('{:.0f}'.format(float(str((end_time-start_time)))))))) start_time = start_time_() # your code here # [i for i in range(0,100000000)] # your code here # end_time = end_time_() print("Execution_time is :", Execution_time(start_time,end_time))
У меня работает приведенный выше код. Надеюсь, это поможет.
источник