“非常容易”是一个非常相对的术语。“开始”就是这样。用 C 语言编写健壮的扩展需要非常小心地注意引用计数、内存分配/释放和错误处理等问题。Cython 为你做了很多事情。
Cython 中的非 unicode 字符串可以是 Python str 对象,也可以是 char 数组,如在 C 中。您认为需要哪些 Cython 特定文档?
我建议您自己尝试 Cython。但在你这样做之前,我强烈建议你检查你的 Python 代码是否效率低下。有时你可以很容易地获得巨大的加速。
例如,压缩空格字符的运行......使用
re.sub(' +', ' ', s) # one space in pattern
意味着在运行长度为 1 的可能并不少见的情况下,它将用空格替换空格。如果所有运行的长度都为 1,它将创建一个新的替换字符串,当它可以轻松地增加(或不减少,或其他)输入字符串的引用计数并将其传回时。
re.sub(' +', ' ', s) # two spaces in pattern
产生完全相同的结果并且可能运行得更快......让我们看看:
所有运行长度 1:它以 3.4 倍的速度运行。未显示:输入字符串越长越好。
\python26\python -mtimeit -s"s='now is the winter of our discontent'; import re; x = re.compile(' +').sub" "x(' ', s)"
100000 loops, best of 3: 8.26 usec per loop
\python26\python -mtimeit -s"s='now is the winter of our discontent'; import re; x = re.compile(' +').sub" "x(' ', s)"
100000 loops, best of 3: 2.41 usec per loop
对于长度为 2 的一次运行,速比为 2.5。对于所有长度为 2 的运行,速比为 1.2。考虑到所有因素,1 次击键的投资回报还不错。