如何使用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)

相关推荐

  • iOS代码片段的示例分析

    技术iOS代码片段的示例分析小编给大家分享一下iOS代码片段的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!【1】键盘遮挡的一种解决方

    攻略 2021年10月21日
  • 相互独立,三件事相互独立与三件事两两独立

    技术相互独立,三件事相互独立与三件事两两独立一相互独立、描述范围1、两两独立:是这n个事件中任意两个事件之间,如有事件A、B、C,满足P(AC)=P(A)P(C),P(AB)=P(A)P(B),P(CB)=P(C)P(B

    生活 2021年10月27日
  • 乐观锁和悲观锁

    技术乐观锁和悲观锁 乐观锁和悲观锁悲观锁:具有强烈的独占和排他特性。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度。因此,在整个数据处理过程中,将数据处于锁定

    礼包 2021年12月15日
  • 在Ubuntu 10.10下如何安装JDK配置Eclipse及Tomcat

    技术在Ubuntu 10.10下如何安装JDK配置Eclipse及Tomcat小编给大家分享一下在Ubuntu 10.10下如何安装JDK配置Eclipse及Tomcat,希望大家阅读完这篇文章之后都有所收获,下面让我们

    攻略 2021年11月26日
  • 迷你图的散点图是什么

    技术sparklines的ScatterChart是什么本篇内容主要讲解“sparklines的ScatterChart是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“s

    攻略 2021年12月16日
  • 查驾驶证,怎么在网上查自己的驾驶证信息

    技术查驾驶证,怎么在网上查自己的驾驶证信息方法一查驾驶证:1、首先打开支付宝,在首页上打开更多。2、在便民生活中找到城市服务。3、点击车主,打开驾驶证信息。4、输入你的驾驶证号和档案编号,点击查询就可以查到你的驾驶证信息

    生活 2021年10月26日