前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >时间都去哪儿了之Python程序测试与优化

时间都去哪儿了之Python程序测试与优化

作者头像
Python小屋屋主
发布2018-04-16 14:35:33
5090
发布2018-04-16 14:35:33
举报
文章被收录于专栏:Python小屋Python小屋

有时候我们需要知道自己的代码运行了多久,time模块的方法提供了这个功能,但是不很准确,例如下面的代码,当循环次数小的时候得到的结果为0,显然这是不可能的。 import time

def test(v):

"""Stupid test function"""

return sum(v)

if __name__ == '__main__':

starttime = time.time()

for i in range(10000):

test(range(100))

endtime = time.time()

print('Time used....')

print(endtime-starttime) 更精确的方法是使用timeit模块中的类或方法,例如下面的代码:

import timeit

def test(v):

"""Stupid test function"""

return sum(v)

if __name__ == '__main__':

print('Time used.....')

print(timeit.timeit("test(range(100))", setup="from __main__ import test", number=10000))

该模块还可以这样用:

>>> t = timeit.Timer('(str(n) for n in range(100))')

>>> t.timeit(number=100000) 0.0895908122711262 >>> t.repeat(number=100000,repeat=3)

[0.10704452514619334, 0.08236811438837321, 0.08216938445730193]

或者这样用:

>>> timeit.repeat('(str(n) for n in range(100))',repeat=5)

[0.8461880084669247, 0.8362863440197543, 0.821552027900907, 0.8418989873480314, 0.81309776424132]

或者这样用:

>>> timeit.timeit('[str(n) for n in range(100)]', number=1000000) 26.671083924054642 >>> timeit.timeit('(str(n) for n in range(100))', number=1000000) 0.833847470578462 >>> timeit.timeit('map(str, range(100))', number=1000000)

0.6070823118230919

或者这样用: >>> timeit.timeit('char in text', setup='text = "sample string"; char = "g"') 0.41440500499993504 >>> timeit.timeit('text.find(char)', setup='text = "sample string"; char = "g"')

1.7246671520006203 咦,我们发现了什么?实现同样的功能,不同写法的执行效率差很多哦,当然这只是一个优化的地方,以后陆续整理Python代码优化的其他原理和思路。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档