如何使用Cython为Python编写更快的C扩展

技术如何使用Cython为Python编写更快的C扩展本篇文章为大家展示了如何使用Cython为Python编写更快的C扩展,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在我们这

本文向您展示了如何使用Cython为Python编写更快的C扩展。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

在这个包含7个PyPI库的系列文章中,我们将学习如何解决常见的Python问题。

Python是最流行的编程语言之一,因为它是开源的,用途广泛(如Web编程、商业应用、游戏、科学编程等)。),并且它有一个充满活力和专注的社区来支持它。这个社区让我们可以在Python包索引(PyPI)中拥有如此庞大多样的软件包,来扩展和改进Python,解决不可避免的问题。

在本系列中,我们将介绍七个PyPI库,它们可以帮助您解决常见的Python问题。第一个是Cython,这是一种简化Python编写c扩展的语言。

00-1010使用Python很有趣,但有时,用Python编写的程序可能会很慢。所有的运行时动态调度都会带来很大的成本:有时比用C或Rust等系统语言编写的等价代码慢10倍。

从成本和可靠性的角度来看,将代码迁移到一种全新的语言可能会花费很多:所有手动重写工作将不可避免地引入错误。我们能两全其美吗?

为了练习优化,我们需要一些慢代码。什么比斐波那契数列的意外指数慢?

def fib(n): IFN 2: return 1 return fib(n-1)fib(n-2)由于对fib的调用将导致两次重新调用,这种效率极低的算法将需要很长时间才能执行。例如,在我的新笔记本电脑上,fib(36)大约需要4.5秒。这4.5秒将成为我们探索Python的Cython扩展所能提供的帮助的基准。

使用Cython的正确方法是将其集成到安装程序中。然而,您可以使用pyximport快速尝试。让我们将fib代码放在fib.pyx中,并使用Cython运行它。

importpyximportPyximport。安装()importfib。fib (36)只使用Cython,没有修改代码,这个算法在我的笔记本上花费的时间减少到2.5秒左右。几乎不需要任何努力,这将运行时间减少了近50%。当然,我得到了一个好结果。

来吧,我们可以让它更快。

cpdefinetfib(intn): IFN 2: return 1 return fib(n-1)fib(n-2)我们将fib中的代码改为cpdef定义的函数,并添加了两种类型的注释:它接受一个整数并返回一个整数。

这变得快得多,只花了大约0.05秒。它是如此之快,以至于我可能开始怀疑我的测量方法包含噪声:以前,这种噪声会在信号中丢失。

下次你的Python代码花太多的CPU时间,可能会让粉丝抓狂。为什么不看看Cython能不能解决这个问题?

以上就是如何使用Cython为Python编写更快的c扩展。你学到什么知识或技能了吗?如果你想学习更多的技能或丰富你的知识储备,请关注行业信息渠道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/50255.html

(0)

相关推荐

  • 为什么spring使用value注解标红(spring中set注入为什么灵活性好)

    技术如何进行spring@value注入配置文件值失败的原因分析今天就跟大家聊聊有关如何进行spring@value注入配置文件值失败的原因分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大

    攻略 2021年12月18日
  • sqlite3基本操作(sqlite3怎么创建数据表)

    技术SQLite3如何实现数据库全文搜索这篇文章主要为大家展示了“SQLite3如何实现数据库全文搜索”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQLite3如何实现数据

    攻略 2021年12月18日
  • wei的成语,带wei(第一声)字的成语

    技术wei的成语,带wei(第一声)字的成语【危在旦夕】危险就在眼前。 【危如累卵】如垒起的蛋那样危险。喻极其危险。 【危言正色】刚直的言论和严正的态度。 【危言逆耳】正直的规劝听起来不顺耳。 【危言高论】正直而不同凡响

    生活 2021年10月20日
  • 闯红灯12123多久能显示,闯红灯后多长时间能查到违章

    技术闯红灯12123多久能显示,闯红灯后多长时间能查到违章一般情况,如果是通过网上的车辆违章进行查询,5个工作日可以查询到了,因为交警队需要输入和核对确认的,最晚不超过13个工作日闯红灯12123多久能显示。如果去车管所

    生活 2021年10月31日
  • 手机掉水里马上捞起来会进水吗,苹果七掉进水里会进水么

    技术手机掉水里马上捞起来会进水吗,苹果七掉进水里会进水么一旦iphone进水手机掉水里马上捞起来会进水吗,按以下步骤处理:1、以最快速度把iphone从水里把它捞出来。2、立即关掉iPhone。马上断开电源。因为手机的损

    2021年10月21日
  • spring boot ignite的使用是怎样的

    技术spring boot ignite的使用是怎样的今天就跟大家聊聊有关spring boot + ignite,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。刚

    攻略 2021年10月20日