返回顶部
首页 > 资讯 > 精选 >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://lsjlt.com/news/309100.html(转载时请注明来源链接)

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

猜你喜欢
  • Cython如何使用
    这篇文章主要讲解了“Cython如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Cython如何使用”吧!Cython是一个编程语言,它通过类似Python的语法来编写C扩展并可以被P...
    99+
    2023-06-27
  • 如何用Cython加速Python代码
    今天就跟大家聊聊有关如何用Cython加速Python代码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。如果你曾经用Python编写过代码,那么等待某些代码块执行的时间可能比您希望的...
    99+
    2023-06-02
  • 如何使用Cython为Python编写更快的C扩展
    本篇文章为大家展示了如何使用Cython为Python编写更快的C扩展,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在我们这个包含了 7 个 PyPI 库的系列文章中学习解决常见的 Python 问...
    99+
    2023-06-16
  • 使用Cython保护Python源代码
    **保护您的Python源不受不必要的读者说起来容易做起来难,因为.pyc字节码是可反编译的,并且混淆很容易被反向工程。我花了一段时间才弄清楚隐藏Python代码的正确方法......Cython是一个优化的静态编译器,可以将.py模块...
    99+
    2023-01-31
    源代码 Cython Python
  • 如何使用 cgo 在 golang 中导入 cython 生成的文件
    今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《如何使用 cgo 在 golang 中导入 cython 生成的文件》,主要内容是讲解等等,感兴趣的朋友可以收藏或...
    99+
    2024-04-05
  • 怎么使用Cython加速Python代码
    这篇文章主要讲解了“怎么使用Cython加速Python代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Cython加速Python代码”吧!如果您曾经用Python编写过代码,那...
    99+
    2023-06-16
  • 使用Cython中prange函数实现for循环的并行
    目录楔子使用 prangeprange 的其它参数在reductions操作上使用prange并行编程的局限性小结楔子 上一篇文章我们探讨了 GIL 的原理,以及如何释放 GIL 实...
    99+
    2024-04-02
  • 利用cython将python转为c代码
    1. 安装cython 2. cython test.py --embed 3. gcc `python-config --cflags` `python-config --ldflags` test.c -o test ...
    99+
    2023-01-31
    代码 cython python
  • 简化Python 编写C 扩展的语言Cython怎么用
    简化Python 编写C 扩展的语言Cython怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python 是当今使用最多的流行编程语言之一,因为:它是开源的,它有广...
    99+
    2023-06-02
  • 利用Numba与Cython结合提升python运行效率详解
    目录NumbaNumba模式什么是LLVM?Numba的优势:Numba的劣势:CythonCython的优势:Cython的劣势:Numba对CythonNumba Numba是一...
    99+
    2024-04-02
  • 如何使用redis
    这期内容当中小编将会给大家带来有关如何使用redis ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。安装redis后,在命令行输入“redis-cli"会车输入...
    99+
    2024-04-02
  • patchnavicat如何使用
    小编给大家分享一下patchnavicat如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、把patchNavicat....
    99+
    2024-04-02
  • phpmyadmin如何使用
    这篇文章给大家分享的是有关phpmyadmin如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。创建数据库在 phpMyAdmin 的主界面中,可以看见有 “语言-langu...
    99+
    2024-04-02
  • 如何使用navicat
    小编给大家分享一下如何使用navicat,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Navicat注册和激活的过程就是Navicat安装的过程,激活过程也比较简便,只要输入Navicat...
    99+
    2024-04-02
  • 如何使用ORM
    本篇内容介绍了“如何使用ORM”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ObjectvieSQL简介O...
    99+
    2024-04-02
  • autotrace如何使用
    这篇文章给大家分享的是有关autotrace如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。autotrace定义:autotrace是一个可以自动获取SQL执行计划和相关...
    99+
    2024-04-02
  • SqlLoader如何使用
    这篇文章将为大家详细讲解有关SqlLoader如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SQL*Loader(SQLLDR)是Oracle的高速批量数据加载工...
    99+
    2024-04-02
  • navicat如何使用
    这篇文章将为大家详细讲解有关navicat如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Navicat可以支持连接多种数据库,使用上的功能也比较强大。如果使用了I...
    99+
    2024-04-02
  • 如何使用DataGrip
    小编给大家分享一下如何使用DataGrip,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!DataGrip是什么DataGrip是...
    99+
    2024-04-02
  • navicat12如何使用
    这篇文章主要介绍navicat12如何使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Navicat 12 具备多项改进和新功能,能满足你对数据库开发的需求。过百种增强的功能和耳目...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作