会员登录 立即注册

搜索

Cython

[复制链接]
崎山小鹿 发表于 2026-2-12 11:53:12 | 显示全部楼层 |阅读模式
崎山小鹿
2026-2-12 11:53:12 1073 0 看全部
Python 是一种高级、解释型的动态编程语言,以简洁易读的语法和丰富的生态著称,适合快速开发、数据分析、Web 后端等各类应用。它的代码通常由 CPython 解释器直接执行,运行时进行类型推导,因此开发效率高,但执行速度相对较慢。

Cython 则是一个将 Python 代码编译成 C 扩展模块的工具,同时也是 Python 语言的超集。它在 Python 语法的基础上,允许开发者添加可选的 静态类型声明(例如 cdef int x),并将整个模块翻译成高效的 C 代码,最终编译为机器码。这使得 Cython 程序可以大幅提升性能,通常能达到与原生 C 相近的速度。

先翻译为 C,再编译为 .so/.pyd 扩展模块,由 Python 导入调用,接近 C 语言的速度(尤其是数值计算和循环)

典型例子
纯 Python 实现
def sum_of_squares(n):
    total = 0
    for i in range(n):
        total += i * i
    return total

Cython 优化版
def sum_of_squares(int n):
    cdef int i
    cdef int total = 0
    for i in range(n):
        total += i * i
    return total

添加了静态类型声明后,循环部分被编译为纯 C 代码,速度可提升几十倍。
cdef int i Cython 会将传入的 Python 整数自动转换为 C int,省去了 Python 动态类型检查的开销,同时函数内部对 n 的访问都是直接的 C 变量读取。
普通 Python 的变量都是 PyObject*,每次读写都需要引用计数、类型检查等;而 C 变量在编译后对应机器指令中的寄存器或栈位置,操作速度与 C 语言完全相同

cythonize -i core.pyx 是一个用于将 Cython 源文件直接编译为当前目录可用的 Python 扩展模块的命令

安装cython
pip install cython

Collecting cython
  Using cached cython-3.2.4-cp310-cp310-win_amd64.whl.metadata (7.7 kB)
Using cached cython-3.2.4-cp310-cp310-win_amd64.whl (2.8 MB)
Installing collected packages: cython
Successfully installed cython-3.2.4


检查安装情况:
import cython
print(cython.__version__)

如果是环境变量的问题,用
python -m Cython.Build.Cythonize 直接通过 Python 执行模块,不依赖 PATH,总是有效

建议日常开发直接使用  python -m Cython.Build.Cythonize -i .\test_cythonize.pyx,既简洁又可靠
Compiling D:\Program Files\Python310\MZ量化\test_cythonize.pyx because it changed.
[1/1] Cythonizing D:\Program Files\Python310\MZ量化\test_cythonize.pyx
test_cythonize.c
  正在创建库 D:\Program Files\Python310\MZ量化\tmpp0136o43\Release\Program Files\Python310\MZ量化\test_cythonize.cp310-win_amd64.lib 和对象 D:\Program Files\Python310\MZ量化\tmpp0136o43\Release\Program Files\Python310\MZ量化\test_cythonize.cp310-win_amd64.exp
正在生成代码
已完成代码的生成


应该会成功生成 .c 文件和编译好的扩展模块(.pyd / .so)
   test_cythonize.pyx
          │
          ▼  (cython 命令)
   test_cythonize.c   ←  C 源码(中间产物)
          │
          ▼  (C 编译器:gcc / cl / clang)
   test_cythonize.cp39-win_amd64.pyd   ←  二进制扩展模块(最终产物)
          │
          ▼  (Python 导入)
   import test_cythonize   →  直接调用函数,享受 C 级速度

调用和测试:
from test_cythonize import calc
print(calc(1, 2))
print(calc(1, 8))

44
50
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

  • 您可能感兴趣
  • USBTreeView
    USBTreeView
    Windows的设备管理器中可以查看USB设备的信息: 驱动程序供应商:FTDI, 数字签名者:
    05-23
  • 电子电路仿真网站
    电子电路仿真网站
    https://velxio.dev/ Arduino、ESP32 和 Raspberry Pi。 直接在您的浏览器中即可使
    05-19
  • ESP32 板子为什么识别为 CP2102
    ESP32 板子为什么识别为 CP2102
    你的ESP32开发板被电脑识别为“CP2102”,这并不是一个错误,而是完全正常的现象。这
    05-09
  • 固件如何加密
    固件如何加密
    做固件加密,本质上是防止别人读取或复制你的程序。常见做法分为“芯片级保护 + 软件
    04-06
  • 高端神经反馈脑波检测系统
    高端神经反馈脑波检测系统
    高端神经反馈脑波检测系统分为脑波检测、脑波分析、脑波解码三个部分。 前端主程序
    01-06
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则 返回列表

管理员给TA私信
以墨运商,以商助墨。

查看:1073 | 回复:0

  • USBTreeView

    Windows的设备管理器中可以查看USB设备的信息: 驱动程序供应商:FTDI, 数字签名者:

    阅读:450|2026-05-23
  • 电子电路仿真网站

    https://velxio.dev/ Arduino、ESP32 和 Raspberry Pi。 直接在您的浏览器中即可使

    阅读:531|2026-05-19
  • ESP32 板子为什么识别为 CP2102

    你的ESP32开发板被电脑识别为“CP2102”,这并不是一个错误,而是完全正常的现象。这

    阅读:755|2026-05-09
  • 固件如何加密

    做固件加密,本质上是防止别人读取或复制你的程序。常见做法分为“芯片级保护 + 软件

    阅读:1165|2026-04-06
  • 高端神经反馈脑波检测系统

    高端神经反馈脑波检测系统分为脑波检测、脑波分析、脑波解码三个部分。 前端主程序

    阅读:15|2026-01-06
  • 国内第三方量化平台有哪些有什么特点

    好的,我们来详细了解一下国内主流的第三方量化平台。这些平台极大地降低了个人投资者

    阅读:3111|2025-12-09
  • 为什么脑波要去除伪迹

    1. 伪迹不是大脑信号 EEG设备记录的是头皮上非常微弱的电位变化(微伏级别,μV)。

    阅读:16|2025-12-05
  • 便携可视化语音AI耳机

    项目起源: 初先生的聊天记录: 你那边掌握的技术,有办法做一个有摄像头的,墨者机

    阅读:1619|2025-12-01
  • 脑波峰值频率

    看看1-30Hz脑波功率曲线 发现15Hz之后的波动很小。 去掉15Hz之后的曲线 发现4Hz

    阅读:106|2025-11-28
  • 什么是基础节律

    🧠 一、什么是“基础节律”(Basic Rhythm) 基础节律 = 在闭眼静息状态下,大脑自发

    阅读:121|2025-11-27
金双石科技,软件开发20年,技术行业领先,您的满意,就是我们的目标,认真负责,开拓进取,让成品物超所值
关于我们
公司简介
发展历程
联系我们
本站站务
友情链接
新手指南
内容审核
商家合作
广告合作
商家入驻
新闻合作

手机APP

官方微博

官方微信

联系电话:15876572365 地址:深圳市宝安区西乡街道宝民二路宝民花园 ( 粤ICP备2021100124号-1 ) 邮箱:qishanxiaolu@qq.com
QQ|Powered by Discuz! X3.5 © 2001-2026 Discuz! Team.
快速回复 返回顶部 返回列表