Cython笔记:基本使用方法

2023-12-13 04:20:40

1 Cython 介绍

  • Cython 是一种编程语言,用于编写 C 扩展的 Python 模块。它结合了 Python 的易用性和 C 的执行效率,旨在提高特定类型的任务的性能,特别是涉及大量数值计算的任务。

1.2 几个特征

1.2.1?Python 语法的基础

  • Cython 的大部分语法非常类似于 Python
  • 可以在 Cython 代码中使用标准的 Python 语句和结构,比如条件语句、循环、函数、类等。

1.2.2?C 语言特性的集成

  • Cython 扩展了 Python 语法,允许直接在代码中使用 C 数据类型(如 int, double)、结构体、指针等
  • 可以通过 cdef 关键字声明 C 类型的变量和函数,这些声明的变量和函数将以 C 语言的速度执行(也就是比Python快的速度)

1.2.3 性能优化

  • Cython 允许直接调用 C 库函数,这对于性能优化非常重要。
  • 通过使用 Cython 编译器,Python 代码(特别是涉及大量数值计算的部分)可以被编译成 C 代码,从而大幅提高运行速度。

1.2.4?兼容性:

  • Cython 代码可以轻松地与 Python 代码和库集成。你可以在 Cython 模块中导入和使用 Python 模块,反之亦然。
  • Cython 也支持调用和扩展现有的 C 代码,这使得它在整合遗留代码方面非常有用。

2 基本实现

2.1 创建一个pyx项目(hello.pyx)

def hello():
    print("Hello world")

?2.2 创建一个setup.py

from distutils.core import setup
from Cython.Build import cythonize
'''
cythonize 函数用于编译 Cython 源代码到 C 语言代码
'''

setup(name='Hello world app',
      ext_modules=cythonize("hello.pyx"))
'''
调用了 setup 函数
__name='Hello world app':这是项目的名称,在这个例子中被命名为 "Hello world app”
ext_modules=cythonize("hello.pyx"):这里指定了扩展模块。cythonize 函数被用来编译指定的 Cython 源文件(在这个例子中是 hello.pyx)
'''

使用setup.py,就免去了gcc手工编译的部分

2.3 编译项目

命令行中输入如下指令

python setup.py build_ext --inplace

?——生成hello.c 和一个.so文件

2.4 在python中调用 编译后的.so文件

创建test.py文件,并调用之

import hello
# 这个import会先找hello.py,找不到就会找hello.so
hello.hello()
python test.py

返回内容:Hello world

文章来源:https://blog.csdn.net/qq_40206371/article/details/134924877
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。