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中请使用isinstance()判断变量类型
Aug 25 Python
Python最基本的数据类型以及对元组的介绍
Apr 14 Python
python中base64加密解密方法实例分析
May 16 Python
使用Python读写及压缩和解压缩文件的示例
Jul 08 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
python爬虫分布式获取数据的实例方法
Nov 26 Python
Python pandas求方差和标准差的方法实例
Aug 04 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 多线程上下文中安全写文件实现代码
2009/12/28 PHP
PHP中的正则表达式函数介绍
2012/02/27 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
Element Input组件分析小结
2018/10/11 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
Python探索之URL Dispatcher实例详解
2017/10/28 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
python实现键盘控制鼠标移动
2020/11/27 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
Python 实现微信自动回复的方法
2020/09/11 Python
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
公积金转移接收函
2014/01/11 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android
PyTorch中permute的使用方法
2022/04/26 Python
排查Tomcat进程假死的问题
2022/05/06 Servers