有时候我们需要知道自己的代码运行了多久,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代码优化的其他原理和思路。

温馨提示:单击文章顶部作者名字旁边浅蓝色的“Python小屋”进入公众号,关注后可以查看更多内容!

欢迎转发给您的朋友,或许这正是Ta需要的知识!

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

  1. 在Python程序中设置函数最大递归深度

    在函数调用时,为了保证能够正确返回,必须进行保存现场和恢复现场,也就是被调函数结束后能够回到主调函数中离开时的位置然后继续执行主调函数中的代码.这些现场或上下文信息保存在线程栈中,而线程栈的大小是有限 ...

  2. 快速记忆python函数-让Python程序快速提升30%的技巧

    一直以来Python性能是遭人诟病的问题之一,抱怨执行慢,没法用.虽然再性能上语言的差异确实存在着明显差异,但是我认为一个非常流行的语言,运行的快慢不会成为阻扰人们使用的因素.如果是的话,可能是由于编 ...

  3. 使用Windows任务计划自动运行Python程序

    目录 1.编写Python程序 2.编写Windows批处理命令 3.创建Windows任务计划 3.1 在程序栏搜索:任务计划程序 3.2 点开后如下图,右键新建一个文件夹: 3.3 创建一个叫Py ...

  4. python测试代码运行时间_10种检测Python程序运行时间、CPU和内存占用的方法

    在运行复杂的Python程序时,执行时间会很长,这时也许想提高程序的执行效率.但该怎么做呢? 首先,要有个工具能够检测代码中的瓶颈,例如,找到哪一部分执行时间比较长.接着,就针对这一部分进行优化. 同 ...

  5. python交互式程序设计导论第一周答案_智慧树知到Python程序设计基础见面课测试答案...

    智慧树知到Python程序设计基础见面课测试答案 更多相关问题 [多选题]用TLC法检查药物中杂质时,通常有以下几种方法 [判断题]月氏从故地到迁入地,均在丝绸之路沿线 [单选题]若炽灼残渣留做重金属 ...

  6. 菜鸟程序员的成长之路(二)——时间都去哪儿了

    距离我的上篇博客菜鸟程序员的成长之路(一)已经过去六个月的时间,又到了总结收获的季节.在漫长的六个月里,发生的了很多的事.残存在大脑中的记忆(不是脑残),已经不能将我带回到去年的九月份,想问自己一句: ...

  7. 已知x=python是一种非常好的编程语言-智慧树知到《Python程序设计基础》章节测试答案...

    智慧树知到<Python程序设计基础>章节测试答案 绪论 1.学好Python程序设计要注意的几个问题是 A:多看多练 B:多想多整理 C:多交流多请教 D:只看视频,不思考.不练习 答案 ...

  8. python语言是开源的现拥有十几万个第三方函数库_智慧树知到《Python程序设计基础》章节测试答案...

    智慧树知到<Python程序设计基础>章节测试答案 绪论 1.学好Python程序设计要注意的几个问题是 A:多看多练 B:多想多整理 C:多交流多请教 D:只看视频,不思考.不练习 答案 ...

  9. 每天拿起手机100次,使用7小时?iOS 12告诉你时间都去哪儿了

    导读:<欲罢不能>一书中提到: 大多数人每天在手机上所用时间为1-4个小时--还有很多人更长.这不是少数人的问题.如果按常规建议里说的那样,我们每天使用手机的时间应该控制在1个小时以下,那 ...

最新文章

  1. 区块链是一种用一种不可变的形式存储数字信息
  2. Hadoop入门实例——WordCount统计单词
  3. 贾君鹏你妈妈喊你回家吃饭
  4. CVPR 2020 | 港中文提出3D目标检测新框架DSGN
  5. LPM Sprint 4-13 开发 工作总结
  6. Netweaver和CloudFoundry的log设置
  7. CF788789(div1div2)
  8. 数据中台建设与应用_Gartner对于建设数据中台的建议
  9. Numpy详细函数属性
  10. 《德鲁克管理思想精要》读书笔记11 - 管理你的下半生
  11. 电脑搜索不到wifi信号的问题解决
  12. 中国行政区边界线下载(省,市,区县、乡镇边界线)
  13. Win8 RP微软原版光盘镜像下载大全(含中文版)
  14. Python爬虫入门(一)(适合初学者)
  15. 解决虚拟专用网络拨号后本地上网流量都走此网络的问题
  16. 14 款命令行常用工具的替代品
  17. Chrome 浏览器 Cookie 跨域共享与升级问题
  18. 3dsmax展UV,制作UV贴图,将物体的贴图放到一张图片上,贴图优化方式,UVW贴图制作全流程
  19. 嵌入式课程设计:socket通信模拟服务器客户端实现文件传送(基于c++语言)
  20. 上拉电阻的作用原理_电容触摸屏原理以及敦泰TP FT5X06驱动

热门文章

  1. 51单片机c语言教程温度计,单片机课程设计-数字温度计.doc
  2. 火绒弹窗拦截_弹窗广告的克星:火绒安全软件图文使用教程
  3. 怎么在计算机修复flash,win10系统怎么用flash修复器?教你用flash修复器修复视频的方法...
  4. php post数组丢失,php – 神秘空$_POST数组
  5. 使用docker下载并安装mongodb5.0.5
  6. linux有个进程有问题_第五十五章、linux下进程的基本知识
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的体育场地预约管理系统
  8. 钉钉日志范文100篇_钉钉的日志模板怎么修改 钉钉日志模板修改教程
  9. ICE提纲之demo/IceStorm/clock(发布者/订阅者)
  10. Vmware虚拟机不能使用键盘的解决方法