首页 / 知识
使用Cython为Python编写更快的C扩展
2023-11-12 13:37:00
使用Python很有趣,但有时,用它编写的程序可能很慢。所有的运行时动态调度会带来很大的代价:有时它比用C或Rust等系统语言编写的等效代码慢10倍。
将代码迁移到一种全新的语言可能会在成本和可靠性方面付出巨大代价:所有的手工重写工作都将不可避免地引入错误。我们可以两者兼得么?
为了练习一下优化,我们需要一些慢代码。有什么比斐波那契数列的意外指数实现更慢?
deffib(n):
ifn<2:
return1
returnfib(n-1)+fib(n-2)
由于对fib的调用会导致两次再次调用,因此这种效率极低的算法需要很长时间才能执行。例如,在我的新笔记本电脑上,fib(36)需要大约4.5秒。这个4.5秒会成为我们探索Python的Cython扩展能提供的帮助的基准。
使用Cython的正确方法是将其集成到setup.py中。然而,使用pyximport可以快速地进行尝试。让我们将fib代码放在fib.pyx中并使用Cython运行它。
>>>importpyximport;pyximport.install()
>>>importfib
>>>fib.fib(36)
只使用Cython而不修改代码,这个算法在我笔记本上花费的时间减少到大约2.5秒。几乎无需任何努力,这几乎减少了50%的运行时间。当然,得到了一个不错的成果。
加把劲,我们可以让它变得更快。
cpdefintfib(intn):
ifn<2:
return1
returnfib(n-1)+fib(n-2)
我们将fib中的代码变成用cpdef定义的函数,并添加了两个类型注释:它接受一个整数并返回一个整数。
这个变得快多了,大约只用了0.05秒。它是如此之快,以至于我可能开始怀疑我的测量方法包含噪声:之前,这种噪声在信号中丢失了。
当下次你的Python代码花费太多CPU时间时,也许会导致风扇狂转,为何不看看Cython是否可以解决问题呢?
以上内容为大家介绍了使用Cython为Python编写更快的C扩展,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规Python系统互动
Python系统互动,互动,系统,管理,通信,标准,管理系统,培训,操作系统,功能,进程,系统互动,主要指Python和操作系统(operatesystem)、文件系统(fipython操作系统接口模块:OS
python操作系统接口模块:OS,管理,工作,工具,系统,服务,培训,模块,文件,目录,函数,OS模块提供了很多与操作系统进行交互的函数,比如常见的使用函Python算法定义
Python算法定义,有限,时间,数据,算法,情况,培训,系统,策略,复杂度,步骤,算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的使用Python执行系统命令方法
使用Python执行系统命令方法,系统,信息,培训,标准,命令,方法,模块,操作,终端,中文,Python是一款操作简单的编程语言,内置丰富的库,能够很容易的基于 Python K-近邻算法的手写识别
基于 Python K-近邻算法的手写识别系统,数据,数字,分析,培训,系统,算法,近邻,测试,样本,图形,这里我们一步步的构造使用k-近邻分类器的手写识Python k-近邻算法常见问题
Python k-近邻算法常见问题,加权,技术,系统,培训,样本,近邻,距离,变量,算法,权重,1,K值设定为多大?K太小,分类结果易受噪声点影响;K太大,近邻中python获取当前时间日期有哪些方法
python获取当前时间日期有哪些方法?,时间,标准,星期六,培训,日期,微秒,结果,模块,星期,格式,获取到时间也是我们在学习python遇到的常见问题,如何在python代码中指定保存的文件
如何在python代码中指定保存的文件格式,代码,培训,文件格式,格式,二进制文件,文件,后缀,以上,方法,更多,python指定保存文件格式的方法:1、保python如何获取程序执行时间?
python如何获取程序执行时间?,代码,培训,标准,程序,方法,中间,使用方法,以上,手册,更多,python获取程序执行时间的方法:1、使用time.clock()方怎么计算python程序运行时间
怎么计算python程序运行时间,时间,培训,程序,方式,脚本,下面,以上,两个,结束,不是,python脚本使用统计时间的方式是time.clock(),而这种方式统Python写完代码怎么用
Python写完代码怎么用,代码,下来,数字,概念,培训,文本,模式,文件,程序,路径,python运行有两种方式,一种是在python交互式命令行下运行;另一种