广告
返回顶部
首页 > 资讯 > 精选 >Cython如何使用
  • 727
分享到

Cython如何使用

2023-06-27 09:06:28 727人浏览 独家记忆
摘要

这篇文章主要讲解了“Cython如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Cython如何使用”吧!Cython是一个编程语言,它通过类似python的语法来编写C扩展并可以被P

这篇文章主要讲解了“Cython如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Cython如何使用”吧!

Cython是一个编程语言,它通过类似python的语法来编写C扩展并可以被Python调用.既具备了Python快速开发的特点,又可以让代码运行起来像C一样快,同时还可以方便地调用C library。

Cython如何使用

Cython

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

将代码迁移到一种全新的语言可能会在成本和可靠性方面付出巨大代价:所有的手工重写工作都将不可避免地引入错误。我们可以两者兼得么?

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

def fib(n):if n return 1return fib(n-1) + fib(n-2)

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

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

>>> import pyximport; pyximport.install()>>> import fib>>> fib.fib(36)

只使用 Cython 而不修改代码,这个算法在我笔记本上花费的时间减少到大约 2.5 秒。几乎无需任何努力,这几乎减少了 50% 的运行时间。当然,得到了一个不错的成果。

加把劲,我们可以让它变得更快。

cpdef int fib(int n):if n return 1return fib(n - 1) + fib(n - 2)

我们将 fib 中的代码变成用 cpdef 定义的函数,并添加了两个类型注释:它接受一个整数并返回一个整数。

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

感谢各位的阅读,以上就是“Cython如何使用”的内容了,经过本文的学习后,相信大家对Cython如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Cython如何使用

本文链接: https://www.lsjlt.com/news/309100.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Cython如何使用
    这篇文章主要讲解了“Cython如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Cython如何使用”吧!Cython是一个编程语言,它通过类似Python的语法来编写C扩展并可以被P...
    99+
    2023-06-27
  • 如何用Cython加速Python代码
    今天就跟大家聊聊有关如何用Cython加速Python代码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。如果你曾经用Python编写过代码,那么等待某些代码块执行的时间可能比您希望的...
    99+
    2023-06-02
  • 使用Cython保护Python源代码
    **保护您的Python源不受不必要的读者说起来容易做起来难,因为.pyc字节码是可反编译的,并且混淆很容易被反向工程。我花了一段时间才弄清楚隐藏Python代码的正确方法......Cython是一个优化的静态编译器,可以将.py模块...
    99+
    2023-01-31
    源代码 Cython Python
  • 如何使用Cython为Python编写更快的C扩展
    本篇文章为大家展示了如何使用Cython为Python编写更快的C扩展,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在我们这个包含了 7 个 PyPI 库的系列文章中学习解决常见的 Python 问...
    99+
    2023-06-16
  • 怎么使用Cython加速Python代码
    这篇文章主要讲解了“怎么使用Cython加速Python代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Cython加速Python代码”吧!如果您曾经用Python编写过代码,那...
    99+
    2023-06-16
  • 使用Cython中prange函数实现for循环的并行
    目录楔子使用 prangeprange 的其它参数在reductions操作上使用prange并行编程的局限性小结楔子 上一篇文章我们探讨了 GIL 的原理,以及如何释放 GIL 实...
    99+
    2022-11-11
  • 如何使用fastcache
    小编给大家分享一下如何使用fastcache,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!VnTrader 2.0版本有不少提速措施,其中lru_cache是提高...
    99+
    2023-06-02
  • crystaldiskinforh如何使用
    这篇文章主要介绍“crystaldiskinforh如何使用”,在日常操作中,相信很多人在crystaldiskinforh如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2023-02-09
  • RPM如何使用
    这篇文章主要介绍了RPM如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇RPM如何使用文章都会有所收获,下面我们一起来看看吧。RPM Package Manager (RPM) 是一个强大的命令行驱动的软...
    99+
    2023-06-27
  • HTTPie如何使用
    今天小编给大家分享一下HTTPie如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。HTTPie 是一个 HTTP 的命...
    99+
    2023-06-28
  • vue.extend如何使用
    本文小编为大家详细介绍“vue.extend如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue.extend如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.Vue.extend的使用参数:对...
    99+
    2023-07-05
  • np.ones如何使用
    这篇文章主要介绍了np.ones如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇np.ones如何使用文章都会有所收获,下面我们一起来看看吧。概述np.ones()函数返回给定形状和数据类型的新数组,其中...
    99+
    2023-07-05
  • np.unique()如何使用
    本篇内容主要讲解“np.unique()如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“np.unique()如何使用”吧!一、np.unique() 介绍对于一维数组或者列表,np.un...
    99+
    2023-07-05
  • MySqlBulkLoader如何使用
    这篇文章主要介绍了MySqlBulkLoader如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySqlBulkLoader如何使用文章都会有所收获,下面我们一起来看看吧。一、MySqlBulkLoad...
    99+
    2023-07-02
  • webpack如何使用
    本篇内容介绍了“webpack如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!webpack介绍和使用一、webpack介绍1、由来由...
    99+
    2023-07-02
  • numpy.insert()如何使用
    这篇文章主要介绍“numpy.insert()如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“numpy.insert()如何使用”文章能帮助大家解决问题。numpy.insert()主要用于...
    99+
    2023-07-05
  • WebComponent如何使用
    本篇内容介绍了“WebComponent如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正文WebComponent 是官方定义的自定...
    99+
    2023-07-05
  • DebugView如何使用
    要使用DebugView,您可以按照以下步骤操作:1. 下载DebugView工具:您可以从Sysinternals Suite官方...
    99+
    2023-09-11
    DebugView
  • 如何使用redis
    这期内容当中小编将会给大家带来有关如何使用redis ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。安装redis后,在命令行输入“redis-cli"会车输入...
    99+
    2022-10-18
  • SqlLoader如何使用
    这篇文章将为大家详细讲解有关SqlLoader如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SQL*Loader(SQLLDR)是Oracle的高速批量数据加载工...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作