在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
这没关系,但支持层次结构需要修改。 对其他想法保持开放。
答案 0 :(得分:3)
您可以使用import x as y
方法重命名模块中的定义。例如,如果foo.py
包含函数func
而bar.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)
这样,您可以在foo
和bar
模块中保留有意义的命名方案。