加入收藏 | 设为首页 | 会员中心 | 我要投稿 唐山站长网 (https://www.0315zz.com.cn/)- 数据安全、数据开发、文字识别、图像处理、媒体智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

怎样算python代码耗时是多少?

发布时间:2022-03-29 13:51:16 所属栏目:语言 来源:互联网
导读:如何计算python代码耗时是多少?一些Python新手不太清楚要怎样统计python代码耗时,文本就给大家介绍几种方法,时间戳相减、装饰器、timeit模块、重复调用 timeit()和cProfile性能分析工具。下面我们一起来具体看看吧。 时间戳相减 在代码执行前后各记录一个
       如何计算python代码耗时是多少?一些Python新手不太清楚要怎样统计python代码耗时,文本就给大家介绍几种方法,时间戳相减、装饰器、timeit模块、重复调用 timeit()和cProfile性能分析工具。下面我们一起来具体看看吧。
 
       时间戳相减
       在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。
 
       获取时间戳time.time()
 
import time
 
start_time = time.time()
sum = 0
for i in range(100000000):
    sum += i
print(sum)
 
end_time = time.time()
print("耗时: {:.2f}秒".format(end_time - start_time))
 
输出:
4999999950000000
耗时: 10.53秒
       获取当前日期 datetime.datetime.now()
 
import datetime
 
start_time = datetime.datetime.now()
sum = 0
for i in range(100000000):
    sum += i
print(sum)
 
end_time = datetime.datetime.now()
print("耗时: {}秒".format(end_time - start_time))
       装饰器
       装饰器是一个装饰函数的函数,能够在不改变函数源码和函数调用方式的情况下给函数增加新的功能。很多时候统计函数的耗时,可以使用装饰器实现。
 
import time
 
def get_time(f):
 
    def inner(*arg,**kwarg):
        s_time = time.time()
        res = f(*arg,**kwarg)
        e_time = time.time()
        print('耗时:{}秒'.format(e_time - s_time))
        return res
    return inner
 
@get_time
def test():
    time.sleep(2)  # 模拟运行2s
 
test()
 
输出:
耗时:2.000781536102295秒
       timeit模块
       timeit 模块提供了测量 Python 小段代码执行时间的方法,可以在命令行界面直接使用,也可以通过导入模块进行调用。
 
       语句执行 number 次的时间
 
#导入timeit.timeit
from timeit import timeit
#看x=1的执行一次的时间(number可以省略,缺省为1000000)
t1 = timeit('x=1', number=1)
print(t1)
#一个列表生成器的执行时间,执行10000次:
t2 = timeit('[i for i in range(100) if i%2==0]', number=10000)
print(t2)
 
输出:
4.0000000001150227e-07
0.04841430000000002
       计算函数的执行时间
 
from timeit import timeit
def func(a):
    sum = 0
    for i in range(a):
        sum += i
    return sum
 
# timeit(函数名_字符串,运行环境_字符串,number=运行次数)
t = timeit('func(10000000)', 'from __main__ import func', number=1)
print(t)
输出:
0.4887406
       重复调用 timeit()
       repeat() 方法相当于持续多次调用 timeit() 方法并将结果返回为一个列表。repeat 参数指定重复的次数,number 参数传递给 timeit() 方法的 number 参数。
 
import timeit
def func(a):
    sum = 0
    for i in range(a):
        sum += i
    return sum
 
# timeit(函数名_字符串,运行环境_字符串,number=运行次数,repeat=重复次数,repeat=5)
t = timeit.repeat('func(100000)', 'from __main__ import func', number=100, repeat=5)
print(t)
       cProfile性能分析工具
       cProfile(语言编写的测试模块)是一个标准库内建的性能分析工具,可以在标准输出中看到每一个函数被调用的次数和运行的时间,从而找到程序的性能瓶颈,从而有针对性的进行性能优化。
 
       Python代码性能分析之cProfile
 
import cProfile
def func(a):
    sum = 0
    for i in range(a):
        sum += i
    return sum
if __name__ == '__main__':
    cProfile.run("func(10000000)")

(编辑:唐山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读