找出一个python脚本完成执行所花费的时间


143

我在python脚本中有以下代码:

def fun(): 
  #Code here

fun()

我要执行此脚本,还要找出执行几分钟所需的时间。我如何找出执行此脚本需要多少时间?一个例子将不胜感激。


5
搜索“ python函数计时”的第一击:daniweb.com/software-development/python/code/216610
Piskvor在

您也可以使用cProfile。给您单独计时每个功能的选项
Adam Rosenthal

Answers:


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日期时间不再具有now属性。
WizzleWuzzle

5
datetime.now()如果您这样做from datetime import datetime,@WizzleWuzzle 不仅可以工作import datetime(仅在Python 3.6.4上得到确认)。
Paul Wicking

130

您是在Linux还是UNIX上从命令行执行脚本?在这种情况下,您可以使用

time ./script.py

2
time -p ./script.py -p管道标志
Joy

1
管道对我们有什么帮助?
ak3191

Windows的时间python myScript.py输出将以秒为单位的执行时间: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中工作。我将在此处保留评论,以便人们可以看到两个版本。
Double AA

15

我通常要做的是使用clock()time()time库中获取。clock测量口译员时间,同时time测量系统时间。其他注意事项可在docs中找到。

例如,

def fn():
    st = time()
    dostuff()
    print 'fn took %.2f seconds' % (time() - st)

或者,您可以使用timeittime由于可以快速解决问题,因此我经常使用该方法,但是如果您正在计时可隔离的代码段,那么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 timedeltastr然后将其转换为:

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 Shell中处于活动状态,现在您应该能够在Shell中调用函数。试试看以检查是否有效

>>>fun(input)
output

很好,可以,现在导入timeit并设置一个计时器

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

现在我们已经设置好计时器,我们可以看到需要多长时间

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

到这里,它将告诉您执行该功能花费了几秒钟(或更短的时间)。如果这是一个简单函数,则可以将其增加到t.timeit(number = 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))

上面的代码对我有用。我希望这有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.