python提高办公效率-【纯干货】提高Python运行效率的小窍门

Python是一门优秀的语言,它能让你在短时间内通过极少量代码就能完成许多操作。不仅如此,它还轻松支持多任务处理,比如多进程。

不喜欢Python的人经常会吐嘈Python运行太慢。但是,事实并非如此。尝试以下六个窍门,来为你的Python应用提速。

窍门一:关键代码使用外部功能包

Python简化了许多编程任务,但是对于一些时间敏感的任务,它的表现经常不尽人意。使用C/C++或机器语言的外部功能包处理时间敏感任务,可以有效提高应用的运行效率。这些功能包往往依附于特定的平台,因此你要根据自己所用的平台选择合适的功能包。简而言之,这个窍门要你牺牲应用的可移植性以换取只有通过对底层主机的直接编程才能获得的运行效率。以下是一些你可以选择用来提升效率的功能包:

Cython

Pylnlne

PyPy

Pyrex

这些功能包的用处各有不同。比如说,使用C语言的数据类型,可以使涉及内存操作的任务更高效或者更直观。Pyrex就能帮助Python延展出这样的功能。Pylnline能使你在Python应用中直接使用C代码。内联代码是独立编译的,但是它把所有编译文件都保存在某处,并能充分利用C语言提供的高效率。

窍门二:在排序时使用键

Python含有许多古老的排序规则,这些规则在你创建定制的排序方法时会占用很多时间,而这些排序方法运行时也会拖延程序实际的运行速度。最佳的排序方法其实是尽可能多地使用键和内置的sort()方法。譬如,拿下面的代码来说:

it168_default.png

在每段例子里,list都是根据你选择的用作关键参数的索引进行排序的。这个方法不仅对数值类型有效,还同样适用于字符串类型。

窍门三:针对循环的优化

每一种编程语言都强调最优化的循环方案。当使用Python时,你可以借助丰富的技巧让循环程序跑得更快。然而,开发者们经常遗忘的一个技巧是:尽量避免在循环中访问变量的属性。譬如,拿下面的代码来说:

it168_default.png

每次你调用str.upper, Python都会计算这个式子的值。然而,如果你把这个求值赋值给一个变量,那么求值的结果就能提前知道,Python程序就能运行得更快。因此,关键就是尽可能减小Python在循环中的工作量。因为Python解释执行的特性,在上面的例子中会大大减慢它的速度。

(注意:优化循环的方法还有很多,这只是其中之一。比如,很多程序员会认为,列表推导式是提高循环速度的最佳方法。关键在于,优化循环方案是提高应用程序运行速度的上佳选择。)

窍门四:使用较新的Python版本

如果你在网上搜索Python,你会发现数不尽的信息都是关于如何升级Python版本。通常,每个版本的Python都会包含优化内容,使其运行速度优于之前的版本。但是,限制因素在于,你最喜欢的函数库有没有同步更新支持新的Python版本。与其争论函数库是否应该更新,关键在于新的Python版本是否足够高效来支持这一更新。

你要保证自己的代码在新版本里还能运行。你需要使用新的函数库才能体验新的Python版本,然后你需要在做出关键性的改动时检查自己的应用。只有当你完成必要的修正之后,你才能体会新版本的不同。

然而,如果你只是确保自己的应用在新版本中可以运行,你很可能会错过新版本提供的新特性。一旦你决定更新,请分析你的应用在新版本下的表现,并检查可能出问题的部分,然后优先针对这些部分应用新版本的特性。只有这样,用户才能在更新之初就觉察到应用性能的改观。

窍门五:尝试多种编码方法

每次创建应用时都使用同一种编码方法几乎无一例外会导致应用的运行效率不尽人意。可以在程序分析时尝试一些试验性的办法。譬如说,在处理字典中的数据项时,你既可以使用安全的方法,先确保数据项已经存在再进行更新,也可以直接对数据项进行更新,把不存在的数据项作为特例分开处理。请看下面第一段代码:

it168_default.png

当一开始myDict为空时,这段代码会跑得比较快。然而,通常情况下,myDict填满了数据,至少填有大部分数据,这时换另一种方法会更有效率。

it168_default.png

在两种方法中输出结果都是一样的。区别在于输出是如何获得的。跳出常规的思维模式,创建新的编程技巧能使你的应用更有效率。

窍门六:交叉编译你的应用

开发者有时会忘记计算机其实并不理解用来创建现代应用程序的编程语言。计算机理解的是机器语言。为了运行你的应用,你借助一个应用将你所编的人类可读的代码转换成机器可读的代码。有时,你用一种诸如Python这样的语言编写应用,再以C++这样的语言运行你的应用,这在运行的角度来说,是可行的。关键在于,你想你的应用完成什么事情,而你的主机系统能提供什么样的资源。

Nuitka是一款有趣的交叉编译器,能将你的Python代码转化成C++代码。这样,你就可以在native模式下执行自己的应用,而无需依赖于解释器程序。你会发现自己的应用运行效率有了较大的提高,但是这会因平台和任务的差异而有所不同。

(注意:Nuitka现在还处在测试阶段,所以在实际应用中请多加注意。实际上,当下最好还是把它用于实验。此外,关于交叉编译是否为提高运行效率的最佳方法还存在讨论的空间。开发者已经使用交叉编译多年,用来提高应用的速度。记住,每一种解决办法都有利有弊,在把它用于生产环境之前请仔细权衡。)

在使用交叉编译器时,记得确保它支持你所用的Python版本。Nuitka支持Python2.6, 2.7, 3.2和3.3。为了让解决方案生效,你需要一个Python解释器和一个C++编译器。Nuitka支持许多C++编译器,其中包括Microsoft Visual Studio,MinGW和Clang/LLVM。

交叉编译可能造成一些严重问题。比如,在使用Nuitka时,你会发现即便是一个小程序也会消耗巨大的驱动空间。因为Nuitka借助一系列的动态链接库(DDLs)来执行Python的功能。因此,如果你用的是一个资源很有限的系统,这种方法或许不太可行。

结论

前文所述的六个窍门都能帮助你创建运行更有效率的Python应用。但是银弹是不存在的。上述的这些窍门不一定每次都能奏效。在特定的Python的版本下,有的窍门或许比其他的表现更好,但这有时候甚至取决于平台的差异。你需要总结分析你的应用,找到它效率低下的部分,然后尝试这些窍门,找到解决问题的最佳方法。

本文系OneAPM工程师编译整理,想阅读更多技术文章,请访问OneAPM官方技术博客( http://code.oneapm.com)

OneAPM 是国内首家支持 Python 的应用性能管理云解决方案,通过 Saas 向用户提供统一的入口、友好的界面、便捷的流程,来管理和监控应用程序的性能,并完成从前端、到网络、直至应用代码的端到端应用性能管理。

相关推荐

10分钟干完两小时的活,会Python自动化办公的人有多爽?

前言 打工人的通病,每天不是加班,就是在加班的路上… 你有没有想过,下班晚、加班,有时候可能是因为自己工作比较低效? 每次处理一些机械,重复,任务量大的工作时,我就会写一些代码来进行自动化办公,轻轻松松完成一大堆的工作,这里也强烈推荐大家去学,不用学得很深入,掌握一些基础技能就差不多够用了,真的建议大家抽空去学一下。 案例分析 在这给你们分享一个案例: 场景是在维护日活超过 3 亿用户的微博私信平台,在一个业务模块中,需要批量替换 200 台服务器中的软件配置,而且每个服务器都有一个文件,需要将第五行内容,

程序员干货站 3336

【雕爷学编程】MicroPython手册之内存优化 mem_info函数

在这个例子中,我们使用micropython.mem_info()函数获取初始内存信息,然后执行一些代码或操作,最后再次调用mem_info()获取操作后的内存信息。在这个例子中,我们定义了一个函数allocate_memory(),该函数动态分配了一些内存,并使用micropython.mem_info()函数获取内存信息。然后,我们使用"mem_info"函数检查当前的内存使用情况,并将其打印出来。在这个例子中,我们导入了"mem_info"模块,并使用"mem_info"函数获取当前的内存使用信息。

雕爷学编程 996

【雕爷学编程】MicroPython手册之内存优化 frozen模块

通过将常用的模块和库固化到固件中,可以减少运行时的内存占用,并加快代码的执行速度。在这个例子中,我们使用"frozen"模块导入了内置的资源文件。icroPython中的"frozen"是一个特殊的功能,用于将Python代码和资源文件编译成固化的字节码,以便在MicroPython设备上运行。它可以通过一个“清单”文件来列出要冻结到固件中的Python文件,清单文件是一个包含一系列函数调用的Python文件,可以在板子定义中编写,也可以编写一个独立的清单文件,并与现有的板子定义一起使用。

雕爷学编程 587

MicroPython核心:优化

MicroPython使用多种优化方法来节省RAM,同时确保程序的高效执行,本文会讨论其中的一些优化。

superatom01的博客 840

micropythonpython区别-MicroPythonPython速度对比

首先说明,micropythonpython是没有任何可比性的,python作为一种通用的语言,在扩展性上不是micropython能比的,比如大量的库,可以方便的用C语言加模块提升速度,有pypy这样的带JIT的解释器,micropython是适合于单片机的系统虽然可以用C写lib,但是需要重新编译整个固件,此外,micropython也缺乏加载本地代码的功能,比如加载C便宜的so库。所以不要...

q6q6q的专栏 3714

python提高办公效率的例子_自我管理 ‖ 提高工作效率,从管理办公桌开始

办公桌如同人脸,可以看出一个人的个性和生活态度。01 一个因办公桌引起的惨痛的教训小娜刚大学毕业,找到了一份世界500强的工作,让同学们羡慕极了。小娜被安排到了行政部,做一名小行政助理,向行政部主管汇报工作。初见时看着挺乖巧的一位小姑娘,相处时间长了,你会发现小娜身上的缺点奇多。而其中最明显的缺点就是小娜懒癌附身,处理过的文件,即将要处理的文件都是随手一丢,放到桌子上堆积成山也不整理,总是要到需要...

weixin_39807896的博客 306

学习python后,有哪些可以加速办公效率的小技巧?_用python提高办公效率

而且现在大火的指纹录入啊,智慧刷题,甚至一些小游戏都是用python做的,别的不说,最简单的就说说我们常用的输入法吧,字母输入到后台处理,也是python来完成,别说excel处理数据了,就连豆瓣、知乎、新浪、谷歌都是他开发的,甚至可以解微分方程,大家要是没什么事情,甚至可以试着用python的几行代码写“跳一跳”来打发时间,称得上是万能的编程语言!其实大部分的内容都是python做的。其次,Python对代码的要求很高,特别是缩进,这就会让代码定义的更加清晰,结构也非常完善,便于阅读。

2401_84140485的博客 1073

学习python后,有哪些可以加速办公效率的小技巧?_用python提高办公效率(1)

比如用excel批量写入数据,读取数据,对数据进行分类等等,都可以用python的几行代码搞定,之前用excel还要一张张表核对,现在都是一次性处理几十甚至几百张,剩下的时间就摸鱼喝茶,而且有一些资料比较难找到,就可以自己再写个爬虫,省去了很多查询资料的时间,更好玩的甚至可以爬来别人的游戏攻略,甚至自动刷题,工作效率真是成倍增长。其实,用python解决excel的数据算是比较简单的技术,而且方法也非常多,目前主流的就有五种:1、使用xlrd来处理;2、使用【xlutils+xlrd】来处理;

m0_57472099的博客 118

提高办公效率,让你在办公室里秀一把!用Python实现自动化办公

虽然江湖上总有“Python杀死了Excel”的说法,但依然有很多人钟情于Excel,虽然很长情,但是丫丫想说的是Python更万能,因为它已经学会了控制Excel自动化办公。如今越来越多的人加入到学习Python的队伍当中,尤其是对于很多职场人来说,不管你是程序员还是非程序员,Python已经为很多职场人士带来了不少便捷。只要使用Python的一些代码,便可以让Python代替人类控制Excel,将原本与Excel重复性多的工作分分钟完成,毫不含糊!操作代码如下:将不同的数据按照指定的格式添加到文件中。

weixin_55154866的博客 452

掌握Python自动化办公的3个核心技能,全是干货建议收藏

本文介绍了Python在文件操作、数据处理及Excel操作方面的核心技能。通过学习这些技能,可以显著提高日常办公效率。无论是文件读写、数据清洗与分析,还是Excel文件的读写和图表生成,Python都能提供简单而高效的方法。掌握这些技能将极大提升个人的工作能力。好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指吧!如果你也想自学Python,可以关注我。

2301_78095812的博客 1571

如何使用python实现自动化办公干货满满!

Python作为一种简单而强大的编程语言,不仅在数据科学和软件开发领域广受欢迎,还在办公自动化方面发挥了巨大作用。通过Python,我们可以编写脚本来自动执行各种重复性任务,从而提高工作效率并减少错误。在本文中,我们将探讨如何利用Python来实现办公自动化,并提供一些示例代码来帮助你入门。

2301_78096295的博客 3367

Python自动化办公从入门到精通(20年经验总结干货

掌握Python自动化办公脚本开发实战技巧,高效解决重复性工作难题。涵盖Excel、Word、邮件等办公场景,结合真实案例与核心代码,提升工作效率数倍。20年经验浓缩精华,方法实用易上手,值得收藏学习。

QuickTrans的博客 1284

Python 办公自动化,全网最全干货来了!

几个表格又让我复制粘贴了一下午,几个 Word 文档又让我合并了好几个小时,几个PPT又让我复制粘贴到 Word 中............为什么会有这么多的体力活呢?怎么才能真正摆脱复制粘贴式的工作,提高办公自动化快人一步呢?我会高举它给你提一个醒---不妨换一种办公自动化的工作方式,从眼下的困顿中抽身。入手该书即可获得作者微信,作者手把手指导。02六大主题,专治复制粘贴全书共17章,分为6个部...

张俊红的个人博客 844

学习python后,有哪些可以加速办公效率的小技巧?

Python的功能非常强大,别说提升效率,就连数据处理、人工智能、大数据分析,最典型的就是用python几行代码解决excel的数据处理问题,注意:前方干货预警、建议码住反复观看!

weixin_55154866的博客 510

Python自动化办公社区 · 资源汇总

日常更新,建议收藏。

weixin_42321517的博客 2万+

【亲测免费】 Python自动化办公Excel+Word+PPT视频课程

Python自动化办公Excel+Word+PPT视频课程 去发现同类优质开源项目:https://gitcode.com/ 资源描述 本仓库提供了一套完整的Python自动化办公视频课程资源,涵盖了Python操作Excel、Word、PPT等多个办公自动化领域。课程内容丰富,不仅包括基础知识的讲解,还提供了大量的实用实例和综合项目,帮助学习者快速掌握Python办公自动化中的应用。 课程内容...

gitblog_09815的博客 862
上一篇: python制作工资计算器-Python制作个税计算器
下一篇: python制作工资计算器-Python计算个人所得税
weixin_37988176
博客等级 码龄10年 4191粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值