ipython環境で同じクラスを共存させる最良の方法は何ですか?ipythonのCythonとPythonクラスの共存?
PythonからCythonへの階層的な(ルートクラスから始まる)いくつかのクラスを徐々に移行したいと考えています。 両方のバージョンを(ipython envで)実行できるようにするため、パフォーマンスを比較し、必要なときにフォールバックできるようにします。
正確には私が望む方法ではないにもかかわらず、うまくいくかもしれない他のアプローチがありますか?
私の現在の実験では、まずクラスの名前を変更し、それらを別々にインポートすることから始めました。 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
これはOKですが、階層をサポートする修正が必要になります。 他のアイデアのためにオープンにしておきます。
なぜあなたは 'import *'を使用していますか?それをやめ、あなたの問題はすぐに消え去ります。 – user2357112
私は通常ファイルごとに1つのクラスを使用しています。だから問題はありません – user1019129
"ファイルごとに1つのクラスを使用します" - 悪い考えです。これはここではJavaではありません。あなたは常にクラスを必要とするわけではありません。そうした場合、ファイルごとに自分自身を制限する理由はありません。 – user2357112