Was ist der beste Ansatz, um die gleichen Klassen in der ipython-Umgebung koexistieren zu lassen?Cython- und Python-Klassenkoexistenz in ipython?
Ich möchte schrittweise einige Klassen in der Hierarchie (ausgehend von den Stammklassen) von Python nach Cython migrieren. Ich möchte in der Lage sein, beide Versionen laufen zu lassen (in ipython env), also kann ich die Leistung vergleichen und in der Lage sein, bei Bedarf zurückzugreifen.
Gibt es einen anderen Ansatz, der funktioniert, wenn auch nicht genau so, wie ich es möchte.
Für meine aktuellen Experimente habe ich damit begonnen, die Klassen umzubenennen und sie separat zu importieren. 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()
das ist umständlich, weil ich alle class-attr/method Zugriffe umbenennen musste. Auch das löst mein Dilemma nicht, wenn ich in die Hierarchie gehe.
Irgendwelche anderen Ideen, wie man sich nähert? Ich meine inkrementelle Umcodierung in Cython.
cswiercz macht guten Punkt:
from blah import Blah
from cblah import Blah as cBlah
das ist in Ordnung, aber Hierarchie unterstützt werden Änderungen erfordern. Wird es offen für andere Ideen bleiben.
Warum benutzen Sie 'import *'? Hör auf damit, und dein Problem verschwindet sofort. – user2357112
Ich benutze normalerweise eine Klasse pro Datei .. also ist es egal – user1019129
"Ich benutze normalerweise eine Klasse pro Datei" - auch eine schlechte Idee. Dies ist nicht Java hier. Sie brauchen nicht immer Klassen, und wenn Sie das tun, gibt es keinen Grund, sich auf einen pro Datei zu beschränken. – user2357112