python 统计代码耗时的几种方法分享


Posted in Python onApril 02, 2021

时间戳相减

在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。

获取时间戳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)")

python 统计代码耗时的几种方法分享

以上就是python 统计代码耗时的几种方法分享的详细内容,更多关于python 统计代码耗时的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python类的用法实例浅析
May 27 Python
Python 使用with上下文实现计时功能
Mar 09 Python
python绘制中国大陆人口热力图
Nov 07 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
python算法与数据结构之冒泡排序实例详解
Jun 22 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
Python小白垃圾回收机制入门
Jun 09 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 Python
python中print格式化输出的问题
Apr 16 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 Python
Python中time与datetime模块使用方法详解
Mar 31 Python
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
You might like
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
JS常用知识点整理
2017/01/21 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
打包发布Python模块的方法详解
2016/09/18 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
Python实现的端口扫描功能示例
2018/04/08 Python
基于pandas将类别属性转化为数值属性的方法
2018/07/25 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
python线程中的同步问题及解决方法
2019/08/29 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Python如何实现线程间通信
2020/07/30 Python
Python无损压缩图片的示例代码
2020/08/06 Python
python Timer 类使用介绍
2020/12/28 Python
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
服装厂厂长岗位职责
2013/12/27 职场文书
借条如何写
2015/05/26 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
员工工作心得体会
2019/05/07 职场文书
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技