<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>C扩展 on PlumePHP</title><link>https://plumephp.com/tags/c%E6%89%A9%E5%B1%95/</link><description>Recent content in C扩展 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 28 Sep 2026 12:00:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/c%E6%89%A9%E5%B1%95/index.xml" rel="self" type="application/rss+xml"/><item><title>Python C 扩展与 FFI：ctypes、cffi、Cython 与 PyO3</title><link>https://plumephp.com/python-c-extensions-ffi/</link><pubDate>Mon, 28 Sep 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/python-c-extensions-ffi/</guid><description>&lt;blockquote&gt;
&lt;p&gt;当纯 Python 性能不够时，C 扩展是最直接的出路。本文覆盖四种主流方案（ctypes / cffi / Cython / PyO3），从快速调用到深度编译逐层进阶。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="目录"&gt;目录&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="#1-%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E7%94%A8-c-%E6%89%A9%E5%B1%95"&gt;为什么要用 C 扩展&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#2-ctypes-%E8%B0%83%E7%94%A8%E5%8A%A8%E6%80%81%E5%BA%93"&gt;ctypes 调用动态库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#3-ctypes-%E9%AB%98%E7%BA%A7%E7%BB%93%E6%9E%84%E4%BD%93%E4%B8%8E%E5%9B%9E%E8%B0%83"&gt;ctypes 高级：结构体与回调&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#4-cffi-%E5%AE%89%E5%85%A8%E7%BB%91%E5%AE%9A"&gt;cffi 安全绑定&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#5-cython-%E7%BC%96%E8%AF%91%E5%8A%A0%E9%80%9F"&gt;Cython 编译加速&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#6-cpython-c-api-%E5%85%A5%E9%97%A8"&gt;CPython C API 入门&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#7-pyo3%E7%94%A8-rust-%E5%86%99%E6%89%A9%E5%B1%95"&gt;PyO3：用 Rust 写扩展&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#8-gil-%E9%87%8A%E6%94%BE%E4%B8%8E%E5%B9%B6%E8%A1%8C"&gt;GIL 释放与并行&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#9-%E6%9E%84%E5%BB%BA%E4%B8%8E%E5%88%86%E5%8F%91"&gt;构建与分发&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#10-%E9%80%9F%E6%9F%A5%E8%A1%A8%E4%B8%8E%E9%80%89%E5%9E%8B%E5%86%B3%E7%AD%96"&gt;速查表与选型决策&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="1-为什么要用-c-扩展"&gt;1. 为什么要用 C 扩展&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;方案&lt;/th&gt;
					&lt;th&gt;加速比&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;调用现成 C 库&lt;/td&gt;
					&lt;td&gt;ctypes / cffi&lt;/td&gt;
					&lt;td&gt;函数级&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;计算热点（循环）&lt;/td&gt;
					&lt;td&gt;Cython&lt;/td&gt;
					&lt;td&gt;10-100x&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数字计算&lt;/td&gt;
					&lt;td&gt;NumPy 向量化&lt;/td&gt;
					&lt;td&gt;100x+（无需手写）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;系统级 / 高性能&lt;/td&gt;
					&lt;td&gt;PyO3 (Rust)&lt;/td&gt;
					&lt;td&gt;编译语言级别&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;判断顺序&lt;/strong&gt;：NumPy/Pandas 能否解决？→ 用已有的 &lt;code&gt;C&lt;/code&gt; 扩展库？→ 才考虑自己写。&lt;/p&gt;</description></item></channel></rss>