范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

监控Python内存使用情况和代码执行时间

  我的代码的哪些部分运行时间最长、内存最多? 我怎样才能找到需要改进的地方?"
  在开发过程中,我很确定我们大多数人都会想知道这一点,而且通常情况下存在开发空间。 在本文中总结了一些方法来监控 Python 代码的时间和内存使用情况。
  本文将介绍4种方法,前3种方法提供时间信息,第4个方法可以获得内存使用情况。time 模块%%time 魔法命令line_profilermemory_profilertime 模块
  这是计算代码运行所需时间的最简单、最直接(但需要手动开发)的方法。他的逻辑也很简单:记录代码运行之前和之后的时间,计算时间之间的差异。这可以实现如下:
  import time
  start_time = time.time()
  result = 5+2
  end_time = time.time()
  print("Time taken = {} sec".format(end_time - start_time))
  下面的例子显示了for循环和列表推导式在时间上的差异:import time # for loop vs. list comp list_comp_start_time = time.time() result = [i for i in range(0,1000000)] list_comp_end_time = time.time() print("Time taken for list comp = {} sec".format(list_comp_end_time - list_comp_start_time)) result=[] for_loop_start_time = time.time() for i in range(0,1000000): result.append(i) for_loop_end_time = time.time() print("Time taken for for-loop = {} sec".format(for_loop_end_time - for_loop_start_time)) list_comp_time = list_comp_end_time - list_comp_start_time for_loop_time = for_loop_end_time - for_loop_start_time print("Difference = {} %".format((for_loop_time - list_comp_time)/list_comp_time * 100))
  我们都知道for会慢一些Time taken for list comp = 0.05843973159790039 sec Time taken for for-loop = 0.06774497032165527 sec Difference = 15.922795107582594 %%%time 魔法命令
  魔法命令是IPython内核中内置的方便命令,可以方便地执行特定的任务。一般情况下都实在jupyter notebook种使用。
  在单元格的开头添加%%time ,单元格执行完成后,会输出单元格执行所花费的时间。%%time def convert_cms(cm, unit="m"): """ Function to convert cm to m or feet """ if unit == "m": return cm/100 return cm/30.48 convert_cms(1000)
  结果如下:CPU times: user 24 µs, sys: 1 µs, total: 25 µs Wall time: 28.1 µs Out[8]: 10.0
  这里的CPU times是CPU处理代码所花费的实际时间,Wall time是事件经过的真实时间,在方法入口和方法出口之间的时间。line_profiler
  前两个方法只提供执行该方法所需的总时间。通过时间分析器我们可以获得函数中每一个代码的运行时间。
  这里我们需要使用line_profiler包。使用pip install line_profiler。import line_profiler def convert_cms(cm, unit="m"): """ Function to convert cm to m or feet """ if unit == "m": return cm/100 return cm/30.48 # Load the profiler %load_ext line_profiler # Use the profiler"s magic to call the method %lprun -f convert_cms convert_cms(1000, "f")
  输出结果如下:Timer unit: 1e-06 s Total time: 4e-06 s File: /var/folders/y_/ff7_m0c146ddrr_mctd4vpkh0000gn/T/ipykernel_22452/382784489.py Function: convert_cms at line 1 Line # Hits Time Per Hit % Time Line Contents ============================================================== 1 def convert_cms(cm, unit="m"): 2 """ 3 Function to convert cm to m or feet 4 """ 5 1 2.0 2.0 50.0 if unit == "m": 6 return cm/100 7 1 2.0 2.0 50.0 return cm/30.48
  可以看到line_profiler提供了每行代码所花费时间的详细信息。Line Contents :运行的代码Hits:行被执行的次数Time:所花费的总时间(即命中次数x每次命中次数)Per Hit:一次执行花费的时间,也就是说 Time = Hits X Per Hit% Time:占总时间的比例
  可以看到,每一行代码都详细的分析了时间,这对于我们分析时间相当的有帮助。memory_profiler
  与line_profiler类似,memory_profiler提供代码的逐行内存使用情况。
  要安装它需要使用pip install memory_profiler。我们这里监视convert_cms_f函数的内存使用情况from conversions import convert_cms_f import memory_profiler %load_ext memory_profiler %mprun -f convert_cms_f convert_cms_f(1000, "f")
  convert_cms_f函数在单独的文件中定义,然后导入。结果如下:Line # Mem usage Increment Occurrences Line Contents ============================================================= 1 63.7 MiB 63.7 MiB 1 def convert_cms_f(cm, unit="m"): 2 """ 3 Function to convert cm to m or feet 4 """ 5 63.7 MiB 0.0 MiB 1 if unit == "m": 6 return cm/100 7 63.7 MiB 0.0 MiB 1 return cm/30.48
  memory_profiler 提供对每行代码内存使用情况的详细了解。
  这里的1 MiB (MebiByte) 几乎等于 1MB。 1 MiB = 1.048576 1MB
  但是memory_profiler 也有一些缺点:它通过查询操作系统内存,所以结果可能与 python 解释器略有不同,如果在会话中多次运行 %mprun,可能会注意到增量列报告所有代码行为 0.0 MiB。 这是因为魔法命令的限制导致的。
  虽然memory_profiler有一些问题,但是它就使我们能够清楚地了解内存使用情况,对于开发来说是一个非常好用的工具总结
  虽然Python并不是一个以执行效率见长的语言,但是在某些特殊情况下这些命令对我们还是非常有帮助的。
  作者:Rishikeshavan

12GB512GB5000万三摄,重回2999元,骁龙8Gen1旗舰价格亲民不得不说,现在的手机圈,内卷确实很严重,为了给618冲销量,主流厂商都在努力拼价格战。你会发现,上半年上市的不少骁龙8Gen1手机,价格都出现了高达1000多元的跳水,但对于消费者微博CEO质问顺丰千元到付快递是不是骗钱的9日,微博CEO王高飞在微博发文称自己多次收到1000元的到付快递包裹,明明已经拒收过一次了,又收到了。并顺丰集团,质问其是否纵容诈骗。有网友发现,王高飞曝出的运单详情显示,付款方全域兴趣电商兴趣在哪里,场域就延伸到哪里返乡青年川香秋月在直播卖货邢德龙摄本报记者潘晓娟2021年4月,在首届生态大会上,抖音电商首次定义了兴趣电商,一种基于人们对美好生活的向往,满足用户潜在购物兴趣,提升消费者生活品质中汽协5月汽车销量186。2万辆,其中新能源汽车销量44。7万辆金融界6月10日消息6月10日,中国汽车工业协会发布最新数据,数据显示,今年5月,国内汽车销量186。2万辆,环比增长57。6,同比下滑12。6。15月,国内汽车累计销量955。5传统购物中心即将消亡出品联商专栏撰文方湖01hr传统购物中心已死购物中心即将消亡吴晓波在2021预见年终演讲大会宣称,购物中心即将消亡。主要从几个方面做了分析一是年轻的80和90后为什么走进购物中心?专家又来了,这次竟是主张直接向居民发钱疫情期间,为了刺激经济经常向居民发放消费券。相信浙江,江苏,北京和上海的网友们很熟悉这个操作了6月8日,在第61期中国经济观察报告会上,北大国发院教授教育部北大人力资本与国家政策研海南环热带雨林国家公园旅游公路设计咨询招标公告乐居新媒体海南讯近日,海南省公共资源交易服务中心发布海南环热带雨林国家公园旅游公路设计咨询招标公告。建设地点环热带雨林国家公园旅游公路串联陵水保亭三亚乐东东方昌江白沙儋州琼中等9个实力歌手王卓实,从停车场保安到身价千万,他是如何逆袭的?2010年作为星光大道的季军被大众所认识,这位仅仅中专毕业的音乐歌喉巨匠得到认可。如今十多年过去,他从当初那个穷小子,一跃成为拥有数万身价的成功人士。并且还迎娶自己的初恋,如今儿女4。3秒破百的比亚迪唐DMp来了油耗低续航长,新增丹拿音响2022款比亚迪唐EV刚上市没多久,6月9日2022款比亚迪唐DMp紧随其后,也正式开启了预售。新车共推出了三个配置的车型,售价区间为29。2833。28万元。可能第一眼你看到这个终于来了,冲上热搜你的手机号绑定了多少APP是不是多到自己都不记得了?如何查询手机号绑定了哪些APP?如何能便捷地实现解绑?办法来了!日前工信部旗下的中国信息通信研究院推出一键查询和一键解绑功能迅速看了这几个脱口秀演员的学历,让我彻底放弃了说脱口秀的想法文微史解读编辑微史解读呼兰呼兰毕业于哥伦比亚大学,胡适陶行知闻一多等人都曾是这个学校的校友。哥伦比亚大学多年来一直在全球的学校中排名前20,而北大在去年才首次进入前20名。因为在美
丁俊晖世界排名再创新低!如今中国新一哥成赵心童,重回巅峰难了近日有消息称丁俊晖这位球员将会参与8月9日的英国公开赛,这也是丁俊晖在斯诺克新赛季参与的第一项国际公开赛,在这次比赛中丁俊晖将会面对非常多的球手,能否将自己的世界排名提升,是丁俊晖杜兰特小贾互换东家?名嘴曝光灰熊6换1方案,莫兰特迎最强帮手上个月,名嘴Jacoby已经给出了快船6换1交易杜兰特的方案,不过最终未能成型,今天他在自己的节目中,又给出了一个篮网和灰熊的交易方案,依旧是围绕杜兰特进行的。我们一起来看一下具体拳王邹市明铁血训儿子!11岁长子中拳流血,娇妻冉莹颖心疼不已邹市明打儿子毫不手软同人不同命,同遮不同柄。王思聪生在王健林家庭,一出生就拥有了许多人奋斗了一辈子也无法拥有的财富。而李亚鹏与王菲的孩子,一出生她的父亲就是影帝,母亲就是歌后。含着光脚的不怕穿鞋的2022女排世联赛后中国队再起航之七其实中国女排的二传历来不好做,整个中国女排除了有限的时间里我们有郎平朱婷这样的超一流攻手可以硬碰硬的解决问题之外,大部分的时间都需要二传想尽办法在进攻中撕开对手的拦防,所以中国女排火箭大赚!篮网尼克斯酝酿三方交易,非卖品巴雷特空降休斯顿?哈登时期的火箭队能够和巅峰勇士抗衡的关键因素是凑齐了哈登保罗的双人组,姚麦时期的火箭队也曾无限接近成功,但最终倒在了伤病问题上。火箭队新赛季也想重新打造双人组,而杰伦格林和贾巴里史中国女排王梦洁疑整容!萝莉变阿姨,球迷认不出来了奥运冠军张常宁和CBA大帅哥吴冠希的婚礼终于画上了圆满的句号,在这场温馨浪漫的婚礼上,我们看到了不少久违露面的女排姑娘们,惠若琪魏秋月等人纷纷到现场为张常宁送上祝福。不过因为一些工9秒91!3个月内,19岁非洲飞人三刷纪录,夸张庆祝致敬百米之神2022年U20田径世青赛百米飞人大战,博茨瓦纳小将特博格跑出9秒91,刷新世界青年纪录。看到自己夺冠在望,特博格夸张庆祝,致敬博尔特!赛后,特博格表示,自己如果不提前庆祝,应该可郎平执教期间最喜欢的弟子,退役后还继续留在女排届刘晓彤最近参加张常宁的婚礼,作为伴娘可以看得出来刘晓彤退役后和之前变化并不是特别大,刘晓彤在东京奥运会上入选国家队大名单,引起非常大的争议,本来刘晓彤也想在东京奥运会上站一班岗,但中国搏击大爆发!张伟丽与这五大虎将冲击世界金腰带今年,中国拳手们在世界各大擂台上表现神勇,不少拳手都获得了冲击冠军的机会。6月,张伟丽霸气KO乔安娜,有望再夺UFC冠军。张沛勉则是在前不久击败了ONE冠军赛踢拳草量级(57公斤)中国女版姚明横空出世!15岁身高2。26米,开场砍20分,内线大魔王近日,全国U15女子青年组篮球比赛得到了许多粉丝的关注,原因在于本次比赛有一位超级大魔王出现在了赛场上。由于参赛球员都是未满15岁的小朋友,因此身高并不是特别的出色,篮筐似乎也降低NBA最新交易勇士放弃维金斯!詹姆斯和湖人彻底闹僵头号周刊一威少签下新经纪人不希望和詹姆斯搭档这个夏天威少的交易闹的沸沸扬扬,湖人管理层询便了所有球队都没有人愿意接手威少,这也让维斯布鲁克愤怒不已,按道理说上个赛季湖人无论得分还是