在昨天的文章中只提到了Go和Rust,Python留在今天好好的写一写。
我在大学时就开始学习Python,已有7,8年,但至今写的代码也不Pythonic。5年多前在Github上传的一个Python入门的代码,到现在已有一千多star,也算经历到Python变火的过程。
读大学时,因为对安全感兴趣,而Python就是做安全必备语言,就找了一本《Python核心编程》看了看。那个时候我主要是在啃APUE,UNP等书,对Python并没有多感兴趣。后面因为要去看Poc和安全工具的代码,写一些小工具,多多少少把Python入了一个门。
就我而言,Python的很多高级特性我至今没有用过,也没有养成以前写C++时动不动看源代码的习惯。
对于公司来说,Python的开发效率高,这一点让很多公司选择它。用Python可以让人专注于定位问题,解决问题,更快的上线新的特性,实现用户价值,但是它确实很慢。
一般的公司面对慢的问题,攒机器就可以了。如果服务器的增长超过了用户的增长,那就得想办法提升运行的效率。最近,我有一段时间一直在研究Python的性能优化,后续会有相关的文章介绍。
Python的性能优化,除了不要写一些垃圾代码之外,还有几个可以考虑的方向。
1.升级到Python3。 Python3有很多新的特性,可以给性能带来提升的可能 比如 asyncio。如果有兼容问题,可以尝试微服务架构。
2.开发工具来帮助调优。首先得找到性能瓶颈,然后才能进行调优。如果不能自己开发,Python自带的工具,还有很多开源的工具都值得尝试,特别是一些可视化的工具。
3.用C/C++重写一些性能敏感的模块。 如果是微服务架构,这样做非常值得。
4.使用Cython。Cython 在现在各大机器学习,深度学习库中大量使用,你也不妨试试。
最后,推荐这样两本书,《Python高性能编程》和《Python性能分析与优化》。这两本书只给出了性能优化考虑的点,更多的探索还需要自己去尝试。后续会有这两本书的读书笔记分享。
最后,我想用 Bruce Eckel 的 《Why I Love Python》中的一页PPT回答题目的问题。完整的ppt请见文章最后的资源列表。
资源列表:
1. Bruce Eckel 的 《Why I Love Python》 https://pan.baidu.com/s/1glHBZ0k-qFZ4XBpIPY2jxQ
2.Instagram 在 PyCon 2017 的演讲摘要 http://www.zlovezl.cn/articles/instagram-pycon-2017/
此文微信公众号链接:
https://mp.weixin.qq.com/s/T-ye0bFNilRI4gbgRoMbYg