ipython中的Cython和Python类共存?

时间:2016-07-06 22:24:02

标签: python ipython cython jupyter

在ipython环境中使相同类共存的最佳方法是什么。

我想逐步将层次结构中的某些类(从根类开始)从Python迁移到Cython。 我希望能够运行这两个版本(在ipython环境中),这样我就可以比较性能,并且能够在需要时回退。

是否有其他方法可行,即使不完全符合我的要求。

对于我目前的实验,我开始重命名类并单独导入它们。 F.E. :

import pyximport; pyximport.install()
from blah import *
from c_blah import *
b = Blah()
cb = c_Blah()

%timeit -n 1000 b.op()
%timeit -n 1000 cb.op()

这很麻烦,因为我必须重命名所有class-attr /方法访问。 一旦我走下层次结构,这也无法解决我的困境。

任何其他想法如何处理这个? 我的意思是在Cython中进行增量重新编码。

cswiercz说得好点:

from blah import Blah
from cblah import Blah as cBlah

这没关系,但支持层次结构需要修改。 对其他想法保持开放。

1 个答案:

答案 0 :(得分:3)

您可以使用import x as y方法重命名模块中的定义。例如,如果foo.py包含函数funcbar.pyx也包含函数func(也许这是您尝试编写foo.func()的Cython版本)然后你可以在你的计时脚本中执行以下操作:

# separate imports
from foo import func as func_py
from bar import func as func_cy

# use the code
func_py(2.0)
func_cy(2.0)

这样,您可以在foobar模块中保留有意义的命名方案。