众所周知,Python非常强大,简单易学,又有很多轮子可以直接拿来用。
但凡事有利必有弊,python运行速度慢。如果你要做一些很耗时间的事情,就会头疼。
这时候也许会有人建议你用C,C++等编程语言。
天啊,他们是开玩笑吗?换C语言有那么容易吗!
不过现在福音来了,不用换编程语言,也可以把速度提高很多倍。
这就是我今天要介绍的PyPy!
1 做个实验
这是一段普通的Python代码,计算从0到1亿之间的整数之和:
import time
from termcolor import colored
start = time.time()
number = 0
for i in range(100000000):
number += i
print(colored("FINISHED", "green"))
print(f"Ellapsed time: {time.time() - start} s")
用默认的python解释器(CPython)运行,然后再用PyPy运行。
它们的运行时间对比大概是这样的:
当然,不同的机器运行可能会有少许差异,但是你可以看到非常明显的差异。
好吧,我就把这篇文章的目的明说了吧:
其实不需要马上用PyPy,但是你有必要知道它的存在,在必要的时候使用它。
下面这句话是Python的发明者说的:
“If you want your code to run faster, you should probably just use
PyPy.” – Guido van Rossum (creator of Python)
翻译成中文的意思是:
如果你想让代码运行的更快,你或许应该直接用PyPy.
2 PyPy是什么?
到底什么是PyPy?
难道我要再学习一门编程语言吗?
不不不!
PyPy只是另外一种Python代码执行引擎。你的Python代码可以在不做任何改动的情况下,直接运行在PyPy上。
就好像你原本开一辆夏利汽车,现在给你来了一辆法拉利!
同样是利,同样的驾照和驾驶技术,你忽然就变得快乐(快了)起来。因为引擎变了,你的吸引力都变大了很多。
3 又快又好!
PyPy为什么可以这么快呢?
我们默认使用的cpytho解释器,它的执行过程是这样的:
Python源代码 -> 字节码 -> 一句一句解释成机器语言 -> 执行
而PyPy使用Just In Time(JIT)技术把Python代码直接编译成机器语言,大概过程是这样的:
Python源代码 -> 机器语言 -> 执行
就光看上面加粗的字的长度,你也看出PyPy肯定很快。
这是PyPy官网给出的比较综合的速度对比:
平均来说,PyPy比CPython快4.2倍。
它的好处除了速度快,还有省内存。这是官方说明:
更要命的是,PyPy使用它非常简单!
4 极简入门
1. 下载
去官网下载页面:
https://www.pypy.org/download.html
下载适合你的版本:
2. 配置环境变量
下载后随便解压到一个位置,并将这个目录添加到系统环境变量:
3. 使用pypy替换python命令
剩下的就是在运行python命令的地方,改成pypy3就行了。
比如打开交互式Python,直接运行pypy3就可以了:
再比如安装第三方库,先安装pip,然后运行和以前几乎一样的命令就行了:
pypy3 -m pip install XXX
- 1
注:由于我很少使用 Windows电脑,本部分截图来源于机器学习算法与Python实战 ,作者海洋。
5 适用型和局限性
如果它那么快,又省内存,为什么不把默认的CPython直接改成pypy,让地球人都用pypy好了!
本文开头说过一句话,凡事有利必有弊,没有什么事情是完美的。
Pypy的好处:
- 速度快,比CPython的平均快4.2倍。
- 对于占用内存比较大程序(比如几百M),可以节约内存。
- 适合长时间运行的代码。
但是它也有不小的局限性:
- 适合纯Python的代码
- 对于不是纯Python的代码(通常是调用C库的Python包,比如Numpy),可能有兼容性问题。现在它已经兼容Numpy了,但是可能有其他问题。
7 最后的建议
总的建议在文章开头已经给了:
1.你不需要马上用PyPy,除非你碰到了性能问题。
2.但是你有必要知道它的存在,在必要的时候使用它。
职业发展
作为一个代码打工仔,对于绝大部分程序员来说,想要成为牛逼的真正挣钱程序员的路还很长,一刻都不能懈怠。
我们无法从HR角度,或者技术leader的角度来臆测哪种状态的面试更能获取面试官青睐。但通过我们积攒的大量的面试经验,大家多少可以推断一些成为有竞争力的程序员的一些必要条件。
大佬云集、资料丰富
当初我在字节认识一个非常非常资深的前辈,他到字节比我早三年,但因为各种原因级别不是很高。我当时问他,既然你对现状如此不满,为什么不想着离开寻找更好的机会呢?
他沉思了片刻跟我说,他说我现在在这里虽然待着不顺心,但是我接触到的人都是非常优秀的。我遇到问题,还可以和你们讨论讨论。我如果出去了,我要是再遇到问题,可能连一个讨论的人都没有。
我当时听听只是觉得有道理,现在再回想起来,感受非常深刻。三观、格局、能力,能够进入大公司的,这三个方面一般都不会太差。别的不说,就拿个人能力而言,我曾出国出差过几个月,有幸见识了许多各种海外名校的同事,和他们学习交流人工智能,这真的让我AI有了更深层次的认识。
除了优秀的同事之外,大公司里往往还有丰富的内部文档和资料。我当时在字节内部看到了很多优秀的文章,也有很多优秀的技术沙龙和分享。现在想起来两年下来,也没有去过几次,文章和资料看得也不算多,现在想想颇为遗憾。别的不说,就拿推荐领域而言,近些年质量不错的论文往往都来源于大公司尤其是国内的大公司,以腾讯、华为和头条为主。除了公开的论文,公司内部还有很多技术相关的资料和文档,这些真的可以说是有价无市,非常珍贵。
Python 知识手册
Linux 知识手册
爬虫查询手册
而且,这些资料不是扫描版的,里面的文字都可以直接复制,非常便于我们学习:
数据分析知识手册:
机器学习知识手册:
金融量化知识手册:
知道你对python感兴趣,所以给你准备了下面的资料
关于Python技术储备
点击链接直达获取资料(安全链接,大家可放心点击)
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】Python学习路线(2023修正版)附涉及资料《Python学习资料》,已经打包好了,自取【ps:需要领取的资料(请备注清楚,查找与发送给你)】。因链接常https://mp.weixin.qq.com/s/UVxw0daFCgAMFhz9cfrjAQ