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爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
python通过实例讲解反射机制
Oct 17 Python
python 实现视频 图像帧提取
Dec 10 Python
python将logging模块封装成单独模块并实现动态切换Level方式
May 12 Python
Python 使用生成器代替线程的方法
Aug 04 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 Python
python获取对象信息的实例详解
Jul 07 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数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
删除重复数据的算法
2006/11/23 Javascript
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
Python实现读取json文件到excel表
2017/11/18 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
Python 硬币兑换问题
2019/07/29 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
生态学毕业生自荐信
2013/10/27 职场文书
黄河的主人教学反思
2014/02/07 职场文书
企业职业病防治方案
2014/05/29 职场文书
最美乡村教师观后感
2015/06/11 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书