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

5种带你轻松分析Python代码的软件库

  通常,人们会使用两种速度来衡量某种编程语言的优劣,即:开发速度和执行速度。对于Python而言,大家往往受益的是它能够快速地编写代码,而忽略了它是否能够快速地运行,并及时完成既定的任务。因此,在出现程序运行缓慢时,我们有必要从代码层面上,找出拖慢的位置和原因,并对其进行处理。
  好消息是,Python提供了许多不同用途的软件库,可方便我们对应用代码进行分析,并找出导致缓慢运行的部分。它们中,有的是只带有标准库的单行工具,有的是可以从运行程序中收集到统计信息的复杂框架。下面,我将向您介绍其中五个可以在PyPI或Python标准库中轻松获得,且能够跨平台运行的软件库。
  1.Time和Timeit
  有时候,您可能只想分析两个代码段从前一个结束到下一个开始运行,是需要几秒钟还是几分钟。对于这样的需求,您可能只需要一个秒表就足够了。
  Python标准库带有两个可用作秒表的功能函数。其中,Time模块具有perf_counter功能。它可以调用操作系统的高精度定时器,以按需获得时间戳。其基本原理是:我们可以在目标操作开始前,调用一次time.perf_counter,然后在操作完成时,再调用一次,以获得两次的时间差。显然,这是一种非常简便易行的时间获取方式。
  而Timeit模块则是会对Python代码进行实质性的审查。它的timeit.timeit功能函数会截取一个代码段,通过运行多次(默认为1百万次),以获得执行该操作所需的平均时间。我们经常可以用它来确定在某个紧密的循环中,单一操作或函数的调用时长。例如,如果您想判定一个列表解析式(list comprehension)与一个常规列表结构,哪个在执行多次操作时会更快一些(列表解析式通常更快)。
  当然,Time的不足之处在于它只是一个秒表,而Timeit的不足之处在于:其主要用例是各个行或代码块上的各个细微标准差(microbenchmarks)。也就是说,仅当这些代码被单独处理时,这种比较才会有意义。因此,这两种方法都不足以对整个程序进行分析。一旦出现数千行的代码,这两种方法都会耗费您大量的时间。
  2.cProfile
  Python标准库还带有一个整体程序分析器--cProfile。在程序运行时,cProfile会通过跟踪代码中的每个函数的调用,以生成一个包含了最常调用函数、以及平均调用时间的列表。
  cProfile具有三大优势:由于它被包含在标准库中,因此现有的Python安装包已经包含了cProfile。它可以分析有关调用行为的许多不同统计信息。例如:它能够将函数调用自己的指令所花费的时间,与该函数所有的其他调用耗时区分开来。据此,您可以判定出到底是该函数本身运行缓慢,还是在其他调用时出现的缓慢。可以实现限定条件的自定义。也就是说,您既可以对整个程序的运行进行采样,又可以仅在指定的函数运行时启用概要分析(toggle profiling)。通过缩小范围和去除分析时产生的"噪声",您可以更好地关注该函数的功能与调用。
  cProfile的不足之处有:默认情况下,它会设置多个采集点,生成大量的统计信息。根据其执行模型,它在捕获每个函数调用时,都会产生大量的流量。因此cProfile不适合通过实时数据的方式,对生产环境中的应用程序进行性能分析。也就是说,它更适合于针对开发过程中的性能分析。
  有关cProfile的更多详细信息。
  3.Pyinstrument
  与cProfile的工作方式类似,Pyinstrument能够通过跟踪目标程序,以报告的形式,反映出那些占用了大部分运行时间的代码。不过,与cProfile相比,Pyinstrument的优点主要体现在如下两个方面:Pyinstrument不会去勾连(hook)函数调用的每个实例,而是会以毫秒为间隔,对程序的调用栈进行采样,因此它能够灵敏地检测出程序中最耗费运行时的部分。Pyinstrument的报告要简洁得多。它能够通过突出显示程序中占用时间最多的函数,以便您能尽快地发现问题,并专注分析原因。
  Pyinstrument同样具有cProfile的各种优点。您可以将它用作应用程序中的对象,来记录所选功能,而不是整个程序的行为。Pyinstrument提供包括HTML格式在内的多种输出形式。当然,您也可以按需查看各个调用的完整时间线。
  此外,如下两个方面值得您的注意:某些通过C编译的扩展程序(例如使用Cython创建的程序),会在通过命令行进行Pyinstrument调用时,可能无法正常工作。不过,如果您在程序本身使用了Pyinstrument,例如:通过使用Pyinstrument分析器的调用包装了main()函数,那么它们还是能够正常工作的。Pyinstrument不能很好地处理在多个线程中运行的代码。此时,您可能需要考虑使用下面将要介绍到的Py-spy。
  4.Py-spy
  与Pyinstrument一样,Py-spy在工作原理上,也是定期采集程序调用栈的状态,而不是记录每一个调用。不过,与PyInstrument不同,Py-spy带有用Rust编写的核心组件(而Pyinstrument使用的是C扩展程序),运行的是带有分析程序的外进程(out-of-process),因此它可以安全地与生产环境中的代码协同使用。
  Py-spy能够轻松地完成许多其他分析工具无法实现的任务,其中包括:分析多线程或带有子处理(subprocessed)机制的Python程序等。此外,Py-spy也可以分析那些使用符号进行过编译的C扩展程序。而对于使用了Cython编译的扩展程序,Py-spy需要使用对应生成的C文件,以便收集正确的跟踪信息。
  我们可以使用如下两种基本方法,来利用Py-spy检查应用程序:使用Py-spy的record命令,并在运行结束后会生成火焰图(flame graph)。使用Py-spy的top命令,通过实时更新,交互式地显示Python应用程序的内部,并以与Unix的top工具相同的方式显示信息。而且那些单线程栈也可以通过命令行被显示出来。
  不过,Py-spy的最大缺点之一是:它主要适用于从外部分析整个程序、或是某些组件,不适合对某个特定的功能函数进行采样。
  5.Yappi
  Yappi是Yet Another Python Profiler("另一个Python分析工具")的缩写。它在功能上,较上述讨论过的工具库只多不少。在默认情况下,PyCharm(译者注:一款为专业Python 开发人员准备的IDE)会已安装了Yappi,因此用户在IDE中已经具有了对于Yappi的内置访问权限。
  要使用Yappi,您需要用指令来"修饰"目标代码,以便针对分析机制进行调用,启动,停止和生成报告。Yappi允许您根据测试的实际需求,在"经过时间(wall time)"或"CPU时间"之间进行选择。前者只是一个秒表;后者则可以通过系统原生API,记录下CPU在实际执行代码过程中的用时,以便调整I/O的暂停或线程的休眠。可见,CPU时间能够方便您更加精确地了解某些操作(例如:数字代码的执行)的实际用时。
  通过Yappi提供的函数--yappi.get_thread_stats(),您可以记录任何一个线程活动,检索出对应的统计信息,并分别对其进行分析。您不但无需"修饰"线程代码,而且可以对统计数据进行过滤和细粒度的排序(类似于cProfile中的此类操作)。
  此外,Yappi的独到之处在于,它可以分析greenlet和coroutine(协程)。作为一种分析并发代码的强大工具,它可以被广泛地用来分析异步metaphor。
  文章来源:https://developer.51cto.com/art/202012/637120.htm

无人机喷洒农药,省时又省力今天(18日),在宁海永丰水稻蔬菜专业合作社的1000余亩小麦种植基地上空,2架多旋翼无人植保机正在喷洒丙硫菌唑和戊唑醇农药,防治小麦赤霉病。两台无人机是昨天刚到,经过调试,今天启东京奥运会发15万个避孕套,这是因为东京有点热?据东京奥运组委会日前公布的防疫规则,各国运动员禁止握手拥抱,但选手村内仍依惯例免费派发15万个安全套观看比赛不准呐喊助威,只能鼓掌颁奖仪式上将没有颁奖嘉宾,运动员将自己从托盘中拿起婚房被9个陌生人偷住4个月,未成年人保护法是来保护他们的?河南南阳网红余岛岛在网络上向大家求助,说他的婚房被一群陌生人住了4个月。据房主介绍,今年过年他和家人一起去了广东。可是五月份亲戚看到他们家房子里竟然亮着灯,于是便询问情况,余岛岛第进口光刻机疑无法进口?华为决定自己造,ASML总裁发出警告科技造就未来,这原本是一句广告语,但从现在的发展状态来看,科技的确掌握着国家的命脉,行业的发展状态也代表着一个国家未来发展的速度,不然为什么发达国家也要在这方面拼命的研发呢?美国的鸿蒙系统比苹果iOS还强大,4月17日这天,将载入华为史册美方对华为的制裁已经两年了,从开始的芯片制裁,到后来的操作系统,芯片我们都知道,是不让其他使用美方技术的芯片供应商给华为供货,而且代加工也不行,而操作系统则是因为谷歌公司收购了安卓不光是转型!缺芯的华为一边是离职,一边是没处生产芯片华为近年来的发展很快,积攒十几年的技术实力,在厚积薄发之后正是风光之时,但是树大招风,遇到了美方制裁这个大环境,作为我国科技企业的龙头,首当其冲的被遏制,我们熟知的就是芯片事件了,冯小刚对赌失败,赔偿华谊2。35亿,但他却并不是输家近日,据媒体报道,冯小刚签署的对赌协议到达了最后时间,因为他并没有完成他在合同中所规定的收益,于是这次对赌,他再次失败,还要进行赔偿2。35个亿的金额,这样的消息在爆料之后,便引发华为确定鸿蒙发布时间,部分机型已提前升级华为华为,中华有为,作为我国科技龙头企业,华为这两年在海外的待遇可是不太顺利,芯片被限制不说,连操作系统都被谷歌限制授权,可谓是困难重重,无奈只好放弃了欧洲的高端在智能手机市场,就中国芯片加速入场,或将成全球芯片工厂,外媒说对了?芯片行业如今无疑已经成为掌握着国家科技动态前沿的核心行业,这些年来所产生的芯片行业的事件,都在提醒着我国要重视芯片发展这一问题了。从整个芯片行业来看,美国是走在行业的前端的,美国已全球变暖即将停止,随之而来的竟是全球降温,这究竟是怎么回事不得不说,全球变暖已经成为了全世界都极度关注的一个问题,为了能够改变这一现状,科学家们做出了很多的努力,来阻止全球进一步变暖。但就在近期,科学家们却带来了一个震惊世界的新消息,那就坏消息接连不断,马云,还能承受得住吗?2009年,马云选择退休之后,似乎出现在大众视野中的次数就变少了很多,而且之后马云还主动辞去了阿里巴巴董事长的职务,不再过多参与公司内政和管理层面的事务。不过呢,作为阿里巴巴的创始
科学家发现一块还未破壳而出的窃蛋龙宝宝胚胎化石一幅生命重建插图显示了一个小动物处于紧缩状态,它的腿被拉起背部弯曲喙部的头向尾部弯曲。这就是英良贝贝(BabyYingliang),这是它的一个昵称,它是在一个蛋里被发现的一块恐龙(科技)国家天文台和贵州大学签约共建天文大数据联合实验室新华社贵阳12月20日电(记者周宣妮)20日上午,国家天文台与贵州大学于贵州省平塘县中国天眼(FAST)观测基地举行签约仪式,共建天文大数据联合实验室。据悉,天文大数据联合实验室的时间是否存在?其实时间是不存在的,你有没有想过,这个世界根本就没有时间的存在,而是我们的幻觉你可能会问,没有时间四季怎么变化,热水怎么变凉?爱因斯坦曾提出不管是分钟还是小时还是几百年,都是我们人俄专家发明用于5G通信设备的特殊材料据俄罗斯卫星通讯社12月21日报道,俄罗斯萨拉托夫国立大学专家发明用于5G设备的特殊材料。使用这种材料可抑制干扰,提高数据接收和传输效率。专家表示,电磁辐射吸收性好且反射性差的材料中国空间站首次出舱!眼前这一画面太漂亮了,网友忍不住惊叹根据国内媒体报道,在北京时间2021年7月4日8时11分,身处中国空间站的刘伯明成功从开启了天和号核心舱出舱舱门。经过操作终于到11时02分,两位宇航员穿着我国自主研发新一代舱外宇中国空间站从头顶飞过,被这些网友拍到!济南版跟拍教程来了哇,我们中国的空间站,好激动!北京时间2021年6月17日9时22分聂海胜刘伯明汤洪波正式向太空出发当日18时48分三名航天员先后进入天和核心舱标志着中国人首次进入自己的空间站如今1。2亿度高温的测量方法不建测温仪,反而建造粒子测速仪前不久我国的人造太阳装置EAST实现了101秒1。2亿摄氏度高温等离子体的维持,这是一项了不起的记录。但同时也有让人疑惑,这1。2亿摄氏度是怎么测出来的?要是用水银温度计来测量,那全球高温炙烤着人们,人类正在经历前所未有的考验(二)地球温度已经到了前所未有的高度,而且还在不断上升,快速采取行动给地球升温踩下急刹车已是迫在眉睫了。我想这已是大多有识之士的共识。但怎样行动才能有效扼制地球升温呢?我想先说说地球不断NASA火星直升机的巨大飞跃带来了新的任务支持角色据外媒TheVerge报道,火星上的Stah地区充满了岩石和沙丘,对于美国宇航局(NASA)的毅力号火星车来说,它太危险了,无法驶过。因此,火星直升机机智号于周一飞过该地区,并拍下如果我们一直向下挖,会挖穿地球吗?地下1米这里是地鼠居住地方如果我们一直向下挖,会挖穿地球吗?地下1米,这里是地鼠居住的深度地下2米,这是普通墓地埋葬的深度地下4米,这是法老图坦卡蒙陵墓的深度。考古学家霍华德卡特在1922年找到了图坦卡蒙的霍金曾预言2032年人类灭亡是否属实?科学家无稽之谈众所周知,随着地球环境的持续变化,有关世界末日的说法越来越多了,比如小行星威胁外星人威胁气候大变样重回冰河时代等等,什么样的言论都有。他们根据的是,如今全球变暖持续,冰川融化导致的