簡體   English   中英

Cython和Python類在ipython中共存嗎?

[英]Cython and Python class coexistence in ipython?

在ipython環境中具有相同類並存的最佳方法是什么?

我想逐步將某些類(從根類開始)從Python遷移到Cython。 我希望能夠同時運行兩個版本(在ipython env中),因此我可以比較性能,並可以在需要時回退。

即使不是我想要的方式,是否還有其他方法可能會起作用。

對於當前的實驗,我首先重命名類並分別導入它們。

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 / method訪問。 同樣,一旦我下降到層次結構,這也無法解決我的難題。

還有其他想法如何解決嗎? 我的意思是在Cython中進行增量編碼。


cswiercz說得很對:

from blah import Blah
from cblah import Blah as cBlah

可以,但是需要對層次結構進行修改。 將保持開放其他想法。

您可以使用import x as y方法重命名模塊中的定義。 例如,如果foo.py包含函數funcbar.pyx也包含函數func (也許這是您試圖編寫Cython版本的foo.func() ),則可以在計時腳本中執行以下操作:

# 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模塊中保留有意義的命名方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM