Python3.8和3.13
不同版本的Python,运行效率相去甚远,对于3.8和3.13这两个版本来说,运行下面的程序,分别耗时4.46和0.5秒。其中,3.8是python支持win7的最后一个版本,所以,除非不得不用win7,否则还是用新版Python比较好。
from timeit import timeit
def newList(n):
L = []
for i in range(n):
L.append(i**2)
return L
timeit(lambda: newList(100_000), number = 100)
Cython
Cython实质上是将Python代码转换为C语言的编译器,但将其视为Python的某个版本也十分合理,其安装过程如下
pip install cython
使用时,先创建以.pyx为后缀的python脚本,然后
# timeTest.pyx
def newList(n):
L = []
for i in range(n):
L.append(i**2)
return L
然后编写setup文 件,并在该文件中调用Cython中的【cythonize】,示例如下
# setup.py
from setuptools import setup
from Cython.Build import cythonize
setup(
name='timeTest',
ext_modules=cythonize("timeTest.pyx"),
zip_safe=False,)
编写完成后,即可调用并测试了,耗时0.38秒。
from timeit import timeit
from timeTest import newList
timeit(lambda: newList(100_000), number = 100)
Pypy
Pypy由于采用了即时编译技术,所以速度快得有些逆天。下载之后只需将其解压,并加入环境变量,然后用pypy代替python命令就可以使用了。目前其最新版本基于python3.11,速度飞快,同样是上面的那段代码,其运行速度在0.1到0.6之间,运行10次取平均值为0.26秒,速度非常惊人。
总结
不同版本Python在运行for循环时,其耗时如下表所示,可见其速度在python3.11时有一个飞跃。
耗时 | |
---|---|
3.8 | 4.46 |
3.10 | 1.91 |
3.11 | 0.48 |
3.12 | 0.56 |
3.13 | 0.49 |
cython | 0.38 |
pypy | 0.26 |