2013-03-21 14 views
10

Einbetten von C++ - Code in Python mit Ctypes, boost.python, etc. machen Ihre Python-Anwendung schneller?Einbetten von C++ - Code in Python macht Ihre Python-Anwendung schneller?

Angenommen, ich mache eine Anwendung in Pygtk und ich brauche einige Funktionen, die schnell sein müssen. Also, wenn ich C++ für bestimmte Aufgaben in meiner Anwendung verwenden wird es von Vorteil sein?

Und was sind andere Optionen, um Python-Code schneller zu machen?

+14

C++ ist kein magisches Werkzeug, das alles schneller macht. Sie können einfach C++ - Code schreiben, der langsamer als Python-Code läuft und das Gleiche tut. Es hängt immer von Ihrer Situation und Ihren C++ - Kenntnissen ab, also ist der einzige Weg, es herauszufinden, es zu tun. – PlasmaHH

+0

Es kommt darauf an. Sie können etwas Code schneller machen, indem Sie ihn durch C++ ersetzen, aber es ist nicht garantiert. – wRAR

+0

Vielen Dank für Ihre Antworten !! Ja, alles hängt von individuellen Programmierkenntnissen ab. Ich wollte nur wissen, ob das Einbetten von C++ - Funktionen in Ihre Anwendung Ihr Programm beschleunigen könnte. –

Antwort

7

Das Umschreiben von performancekritischen Teilen Ihres Codes in C++ könnte eine Option sein. Um dies effektiv zu tun, müssen Sie zuerst verstehen, wo die Engpässe sind. Der beste Weg dies zu tun ist wahrscheinlich, zuerst alles in reinem Python zu schreiben und dann zu profilieren.

Eine andere Option könnte sein, PyPy zu verwenden.

Schließlich, wenn Sie feststellen, dass der Flaschenhals numerische Berechnungen ist, dann ist NumPy einen Blick wert.

Es ist erwähnenswert, dass, wenn sich zum Beispiel herausstellt, dass Ihr Code I/O-gebunden ist, keine der oben genannten Optionen hilfreich sein wird.

+0

Danke NPE, jetzt verstehe ich es. NumPy ist etwas, das ich weiter erforschen könnte. –

2

Es kommt darauf an, es gibt keine endgültige Antwort. Wenn Sie in C++ schlechten Code schreiben, könnte es sogar langsamer als gut geschriebener Python-Code sein.

Angenommen, Sie können C++ - Code mit guter Qualität schreiben, können Sie in den leistungskritischen Teilen mit bis zu 20-fachen Beschleunigungen rechnen.

Wie die andere Antwort sagt, NumPy ist eine gute Option für numerische Engpässe (wenn Sie in Matrix-Operationen statt Schleifen denken!); und SciPy kommt mit Weaver, mit dem Sie Inline-C++ und andere Goodies einbetten können.

+0

Ja, NumPy ist etwas, was ich gesucht habe !! –