How do I get time of a Python program's execution?
Как мне узнать время выполнения программы на Python?
У меня есть программа командной строки на Python, для завершения которой требуется некоторое время. Я хочу знать точное время, необходимое для завершения запуска.
Я просмотрел timeit модуль, но, похоже, он предназначен только для небольших фрагментов кода. Я хочу определить время выполнения всей программы.
$ time -v python yourprogram.py Command being timed: "python3 yourprogram.py" User time (seconds): 0.08 System time (seconds): 0.02 Percent of CPU this job got: 98% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.10 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 9480 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 1114 Voluntary context switches: 0 Involuntary context switches: 22 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
Ответ 3
Я помещаю этот timing.py модуль в свой собственный site-packages каталог и просто вставляю import timing вверху моего модуля:
Я также могу вызвать timing.log из своей программы, если в программе есть важные этапы, которые я хочу показать. Но простое включение import timing выведет время начала и окончания, а также общее прошедшее время. (Простите за непонятную secondsToStr функцию, она просто форматирует количество секунд с плавающей запятой в форму hh: mm: ss.sss.)
Примечание: Версию приведенного выше кода на Python 3 можно найти здесь или здесь.
Ответ 4
Мне нравится вывод, который предоставляет datetime модуль, где объекты time delta показывают дни, часы, минуты и т.д. По мере необходимости в удобочитаемом виде.
Например:
from datetime import datetime start_time = datetime.now() # do your work here end_time = datetime.now() print('Duration: {}'.format(end_time - start_time))
Пример вывода, например
Duration: 0:00:08.309267
или
Duration: 1 day, 1:51:24.269711
Как упоминал Дж.Ф. Себастьян, при таком подходе могут возникнуть некоторые сложности с местным временем, поэтому его безопаснее использовать:
import time from datetime import timedelta start_time = time.monotonic() end_time = time.monotonic() print(timedelta(seconds=end_time - start_time))