Дізнайтеся час, який знадобився сценарію python для завершення виконання


143

У мене в сценарії python у мене такий код:

def fun(): 
  #Code here

fun()

Я хочу виконати цей скрипт, а також дізнатися, скільки часу знадобилося на виконання за кілька хвилин. Як дізнатися, скільки часу знадобилося для виконання цього сценарію? Приклад був би дуже вдячний.


5
Перший удар у пошуках "часу функціонування пітона": daniweb.com/software-development/python/code/216610
Пісквор вийшов із будинку

Ви також можете використовувати cProfile . Надає вам можливість час кожного функціонування окремо
Адам Розенталь

Відповіді:


263
from datetime import datetime
startTime = datetime.now()

#do something

#Python 2: 
print datetime.now() - startTime 

#Python 3: 
print(datetime.now() - startTime)

5
Новачок у Python, що працює в 3.6.1. Час дати FYI більше не має атрибуту.
WizzleWuzzle

5
@WizzleWuzzle datetime.now()працює, якщо ви це робите from datetime import datetime, а не просто import datetime(щойно підтверджено на Python 3.6.4).
Пол Віккінг

130

Ви виконуєте сценарій з командного рядка в Linux або UNIX? У такому випадку ви могли просто скористатися

time ./script.py

2
time -p ./script.py -pпрапор для трубопроводу
Радість

1
і чим нам допомагає трубопровід?
ak3191

time python myScript.py для windows Покладений час буде Час виконання в секундах: 38.509970903396606 реальний 0m38.792s користувач 0m0.015s sys 0m0.046s
Aryashree Pritikrishna

64
import time
start = time.time()

fun()

# python 2
print 'It took', time.time()-start, 'seconds.'

# python 3
print('It took', time.time()-start, 'seconds.')

5
Останній рядок, ймовірно, повинен читати print('It took {0:0.1f} seconds'.format(time.time() - start))в python 3.x.
Кріс Мюллер

3
@ChrisMueller Я працював у python2.7. Я залишу тут коментар, хоча люди можуть бачити обидві версії.
Подвійний АА

15

Те , що я зазвичай роблю це використання 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. Якщо ви хочете , щоб час виконання сценарію в легко читається форматі, будь то секунди або дні, ви можете перетворити до timedeltaі strце:

runtime = time() - st
print 'runtime:', timedelta(seconds=runtime)

і це буде надрукувати щось із форми [D day[s], ][H]H:MM:SS[.UUUUUU]. Ви можете переглянути документи timedelta .

І нарешті, якщо те, що ви насправді шукаєте, це профілювання вашого коду, Python робить доступною і бібліотеку профілів .


15
import time 

startTime = time.time()
# Your code here !
print ('The script took {0} second !'.format(time.time() - startTime))

Попередній код працює для мене без проблем!


14
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))

роздруківка протягом 50 секунд - "0: 0: 50"
htzfun

10

Використовуйте модуль timeit. Це дуже просто. Запустіть файл example.py, щоб він був активним в оболонці Python, тепер ви зможете викликати свою функцію в оболонці. Спробуйте перевірити, чи працює він

>>>fun(input)
output

Добре, що працює, зараз імпортуйте timeit і встановіть таймер

>>>import timeit
>>>t = timeit.Timer('example.fun(input)','import example')
>>>

Тепер у нас налаштований таймер, ми можемо побачити, скільки часу потрібно

>>>t.timeit(number=1)
some number here

І ось ми підемо, воно покаже вам, скільки секунд (або менше) знадобилося для виконання цієї функції. Якщо це проста функція, ви можете збільшити її до t.timeit (число = 1000) (або будь-яке число!), А потім розділити відповідь на число, щоб отримати середнє значення.

Я сподіваюся, що це допомагає.


0

використовувати пакети часу та дати.

якщо хтось хоче виконати цей скрипт, а також дізнатися, скільки часу знадобилося на виконання за кілька хвилин

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))

Наведений вище код працює для мене. Я сподіваюся, що це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.