我可以通过普通的Python脚本使用Cython编译吗?

3 投票
1 回答
1486 浏览
提问于 2025-04-18 06:52

Cython 有时候可以显著减少计算时间,因为它会把代码转换成 C 语言来运行。有没有办法通过普通的脚本来使用 Cython,像用某个 import 函数那样?

我下载了 Python(x y),但我甚至不太确定使用 Python 的“最佳”方式是什么,是用 iPython notebook 还是 Spyder 等等……?

我还有哪些其他选择呢?

1 个回答

4

你可以把你的cython代码写在一个以.pyx为后缀的文件里。

然后使用pyximport来编译这个文件,方法是添加类似下面的内容:

  `import pyximport;     
   pyximport.install()` 
   from foo import foo # finds foo.pyx automatically

它会检测cython文件的变化,如果有必要就重新编译,否则就加载之前缓存的模块。

下面是一个简单的例子,假设我在和我的fib.pyx文件在同一个目录下用ipython运行:

我的fib.pyx文件内容如下:

def cython_fib(int n):
    cdef long i,a, b
    a,b = 0,1
    for i in xrange(n):
         a,b = b,a + b
    return a

然后我导入pyximport等其他内容。

In [1]: import pyximport 

In [2]: pyximport.install()
Out[2]: (None, <pyximport.pyximport.PyxImporter at 0x7f0139916e10>)

In [3]: from fib import cython_fib # import like a normal python import

In [4]: cython_fib(20)
Out[4]: 6765

撰写回答