优草派 > Python

python测试运行的时间差?

高伟         优草派

Python 中用来获得代码的执行时间的操作常见有两种:直接记录起始和结束时间、使用 time 模块来获得。在一般的大数据计算时,时间的节约是至关重要的。除此之外,我们也需要对测试的时间差有一个较为详尽的了解。

一、简单计算时间

python测试运行的时间差?

记录时间差可以用 Python 中自带的 datetime 库的 datetime.datetime.now() 方法。通过下面的代码来计算一个函数的运行时间:

def time_cost(fn):

start = datetime.datetime.now()

fn()

print("time cost : ", datetime.datetime.now() - start)

运行上述代码,可以得到 fn 函数的运行时间:

$ time cost : 0:00:01.000417

第二种方式是time库,计算某个函数执行的时间需要如下操作:

import time

def time_cost(fn):

start = time.time()

fn()

print("time cost : ", time.time() - start)

实现方案2的操作:

def foo():

time.sleep(1)

time_cost(foo)

输出如下:

$ time cost : 1.0004310607910156

也就是说通过 time 库我们可以精确计时,精确到小数点后六位。

二、性能分析模块——cProfile

cProfile 同时提供了命令行和 API 使用方式,命令行方式和 pycharm,anaconda 都带有这个模块。所以无论你是使用命令行还是 pycharm,都可以放心一起来对我们的 Python 代码来进行分析,找到其中性能的瓶颈所在,从而可以优化它。下面是简单而又直观的一个例子,可以帮助开发者更好的理解问题所在。

import cProfile

def foo():

list1 = []

for i in range(10000):

list1.append(i)

for j in range(10000):

list1.index(j)

cProfile.run("foo()")

展开之后,可以看到 类似于以下的输出:

40004 function calls in 0.012 seconds

Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)

1 0.002 0.002 0.012 0.012 :1()

2 0.001 0.001 0.002 0.001 {built-in method builtins.append}

10000 0.006 0.000 0.009 0.000 {built-in method builtins.index}

这样就可以比较容易的找到代码中的性能瓶颈所在。

三、timeit模块

timeit模块是一个小工具,它可以用来测量方法的执行时间。它在经过一些设置之后会返回方法的执行时间,并且可以通过参数设置不同的执行回数。

通过导入方法,实现的方式非常的简单。

import timeit

nums = [1, 2, 3, 4]

def use_append(num):

temp = []

for i in range(num):

temp.append(i)

print(timeit.timeit('use_append(10000)', setup='from __main__ import use_append', number=1000))

输出在我的电脑上是:0.6679865,即用 append 的函数用 10000 次执行的时间是 0.66 秒,执行了 1000 次。

四、总结

测试运行的时间差的方法不同,可以根据业务情况和代码的复杂度来选择更加适合的方法。在大数据计算时,测试代码运行效率的优化是至关重要的。本文总结介绍了3种情况下Python常用的时间差测试方法,datetime库、cProfiler和timeit库,这些工具可以帮助我们更好地优化代码,在大数据量的计算中提高效率。另外,在使用这三种方法时,不宜只看其表面意义,最好能结合代码运行的实际情况和数据表现进行分析和比较,更好的寻找改进空间。

  • 微信好友

  • 朋友圈

  • 新浪微博

  • QQ空间

  • 复制链接

取消
5天短视频训练营
新手入门剪辑课程,零基础也能学
分享变现渠道,助你兼职赚钱
限时特惠:0元
立即抢
新手剪辑课程 (精心挑选,简单易学)
第一课
新手如何学剪辑视频? 开始学习
第二课
短视频剪辑培训班速成是真的吗? 开始学习
第三课
不需要付费的视频剪辑软件有哪些? 开始学习
第四课
手机剪辑app哪个好? 开始学习
第五课
如何做短视频剪辑赚钱? 开始学习
第六课
视频剪辑接单网站APP有哪些? 开始学习
第七课
哪里可以学短视频运营? 开始学习
第八课
做短视频运营需要会什么? 开始学习
【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。

客服热线:0731-85127885

湘ICP备19005950号-1  

工商营业执照信息

违法和不良信息举报

举报电话:0731-85127885 举报邮箱:tousu@csai.cn

优草派  版权所有 © 2024