目录
- 时间戳相减
- 装饰器
- 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)")
以上就是python 统计代码耗时的几种方法分享的详细内容,更多关于python 统计代码耗时的资料请关注脚本之家其它相关文章!
您可能感兴趣的文章:- Python 统计数据集标签的类别及数目操作
- Python统计可散列的对象之容器Counter详解
- Python 统计列表中重复元素的个数并返回其索引值的实现方法
- Python实战之单词打卡统计
- python之cur.fetchall与cur.fetchone提取数据并统计处理操作
- python自动统计zabbix系统监控覆盖率的示例代码
- Python统计列表元素出现次数的方法示例
- python统计RGB图片某像素的个数案例
- Python jieba 中文分词与词频统计的操作
- 利用Python3实现统计大量单词中各字母出现的次数和频率的方法
- 使用Python 统计文件夹内所有pdf页数的小工具
- python 统计list中各个元素出现的次数的几种方法
- python调用百度AI接口实现人流量统计
- Python代码覆盖率统计工具coverage.py用法详解
- python 爬虫基本使用——统计杭电oj题目正确率并排序
- 利用python汇总统计多张Excel
- python统计mysql数据量变化并调用接口告警的示例代码
- 用python实现监控视频人数统计