返回顶部
首页 > 资讯 > 后端开发 > Python >简化Python 编写C 扩展的语言Cython怎么用
  • 416
分享到

简化Python 编写C 扩展的语言Cython怎么用

2023-06-02 06:06:14 416人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

简化python 编写C 扩展的语言Cython怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python 是当今使用最多的流行编程语言之一,因为:它是开源的,它有广

简化python 编写C 扩展的语言Cython怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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

在本系列中,我们将介绍七个可以帮助你解决常见 Python 问题的 PyPI 库。首先是 Cython,一个简化 Python 编写 C 扩展的语言。

Cython

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

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

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

def fib(n):if n < 2: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 < 2:return 1return fib(n - 1) + fib(n - 2)

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

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

当下次你的 Python 代码花费太多 CPU 时间时,也许会导致风扇狂转,为何不看看 Cython 是否可以解决问题呢?

关于简化Python 编写C 扩展的语言Cython怎么用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网Python频道了解更多相关知识。

--结束END--

本文标题: 简化Python 编写C 扩展的语言Cython怎么用

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

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

猜你喜欢
  • 简化Python 编写C 扩展的语言Cython怎么用
    简化Python 编写C 扩展的语言Cython怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python 是当今使用最多的流行编程语言之一,因为:它是开源的,它有广...
    99+
    2023-06-02
  • 如何使用Cython为Python编写更快的C扩展
    本篇文章为大家展示了如何使用Cython为Python编写更快的C扩展,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在我们这个包含了 7 个 PyPI 库的系列文章中学习解决常见的 Python 问...
    99+
    2023-06-16
  • 用 Go 编写的 Python 扩展会忽略 Ctrl+C
    php小编苹果发现,使用Go编写的Python扩展在处理Ctrl+C信号时可能会出现问题。通常情况下,当我们在命令行中按下Ctrl+C时,会发送一个SIGINT信号给正在运行的程序,以...
    99+
    2024-02-13
    overflow python安装
  • 怎么使用c语言编写简单小游戏
    编写一个简单的猜数字小游戏的例子:```#include #include #include int main() {int ran...
    99+
    2023-08-31
    c语言
  • 怎么使用emacs编写C语言
    这篇文章主要介绍“怎么使用emacs编写C语言”,在日常操作中,相信很多人在怎么使用emacs编写C语言问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用emacs编写C语言”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • 怎么用visual studio编写c++语言
    要在Visual Studio中编写C++语言代码,您可以按照以下步骤进行操作: 下载并安装Visual Studio:您可以从...
    99+
    2023-10-25
    c++
  • 怎么为Python写一个C++扩展模块
    今天小编给大家分享一下怎么为Python写一个C++扩展模块的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。源代码和往常一样,...
    99+
    2023-07-06
  • 如何使用 C++ STL 扩展 C++ 语言的功能?
    c++++ stl 为 c++ 提供容器、算法和函数,增强其功能:容器:存储数据的对象,包括顺序容器和关联容器。算法:操作数据的函数,包括排序、搜索和其他算法。函数:其他有用的函数,如数...
    99+
    2024-05-24
    c++ stl git
  • 怎么用c语言编写x的y次方
    这篇文章主要讲解了“怎么用c语言编写x的y次方”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用c语言编写x的y次方”吧!C语言pow()函数:求x的y次方(次幂)头文件:#include...
    99+
    2023-06-20
  • 如何用C语言编写一个简单的计算器
    这期内容当中小编将会给大家带来有关如何用C语言编写一个简单的计算器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。描述:简单的实现四则运算1.switch法#include<stdio.h>vo...
    99+
    2023-06-06
  • 如何用c语言编写简单计算机程序
    以下是一个简单的C语言程序,用于实现两个数的加法运算:```#include int main() {int num1, num2,...
    99+
    2023-09-22
    c语言
  • c语言简单烟花代码怎么写
    要编写一个简单的 c 语言烟花代码,需要遵循以下步骤:包含头文件和库。定义常量和宏。创建粒子数据结构。声明全局变量。在 main() 函数中初始化烟花粒子。在游戏循环中更新粒子的位置和速...
    99+
    2024-04-13
    c语言 typedef
  • 怎么用c语言编写汉诺塔程序
    以下是使用C语言编写汉诺塔程序的示例代码: #include void hanoi(int n, char from, char...
    99+
    2023-10-23
    c语言
  • 怎么用c语言编写双色球选号
    编写双色球选号的C语言程序可以利用随机数生成器来产生选号。以下是一个简单示例:```c#include #include #include #define MAX_RED_NUM 33#define MAX_BLUE_NUM 16// ...
    99+
    2023-08-11
    c语言
  • 怎么使用c语言编写抽奖转盘
    编写抽奖转盘的C语言代码可以分为以下几个步骤:1. 导入必要的头文件:```c#include #include #include ...
    99+
    2023-08-15
    c语言
  • c语言中helloworld怎么编写代码
    在 c 语言中,编写 "hello, world!" 程序的步骤包括:创建源文件 "hello.c"。包含头文件 。定义主函数 main()。使用 printf() 输出 "hello,...
    99+
    2024-04-05
    c语言
  • 怎么用c语言编写一个旋转的动画
    要使用C语言编写一个旋转的动画,可以使用图形库如OpenGL或者SDL来实现。以下是使用OpenGL库编写一个旋转的动画的示例代码:...
    99+
    2023-10-11
    c语言
  • 怎么用Python编写简易的成语接龙游戏
    本文小编为大家详细介绍“怎么用Python编写简易的成语接龙游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Python编写简易的成语接龙游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.游戏规则下...
    99+
    2023-06-29
  • 怎么用C语言优化Python代码
    这篇文章主要介绍“怎么用C优化Python代码”,在日常操作中,相信很多人在怎么用C优化Python代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C优化Python代码”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-15
  • linux中怎么编写c语言并运行
    要在Linux中编写和运行C语言程序,可以按照以下步骤进行:1. 打开终端:在Linux系统中,可以使用终端来执行命令和编写代码。2...
    99+
    2023-10-10
    linux c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作