Hallo,
ich möchte eine Simulation in Python machen. In der Simulation werde ich auf die Pakete Pandas, Scipy und Numpy zurück greifen.
Welche Möglichkeiten habe ich, den Python Code zu compilieren? Ich möchte NICHT C/ C++ in Python einbetten (weil ich kein C kann).
Consuli
Python compilieren für quantitative Simulation
Grundsätzlich kompiliert man Python Code nicht. Es gibt zwar durchaus Möglichkeiten Python zu kompilieren aber die eignen sich nur unter bestimmten Umständen. Insofern wäre es gut zu wissen wieso du deinen Python Code überhaupt kompilieren möchtest.
Das ist eine äusserst rechenintensive Simulation von schiefen Verteilungen mit sehr vielen Iterationen. Aus Performancegründen möchte ich den Code daher compilieren. Wegen der Performance bin ich für diese Aufgabe von R nach Python ausgewichen.
Welche Möglichkeiten gibt es denn überhaupt Python Code zu compilieren?
Eignen sie sich wegen der numerischen Libraries Pandas, Scipy und Numpy nicht?
Consuli
Welche Möglichkeiten gibt es denn überhaupt Python Code zu compilieren?
Eignen sie sich wegen der numerischen Libraries Pandas, Scipy und Numpy nicht?
Consuli
Who controls the British crown? Who keeps the metric system down? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
@consuli: Einfach so Python-Code zu ”kompilieren” bringt nicht viel. Die Sprache ist zu dynamisch um sie (statisch) effizient in ”nativen” Code zu übersetzen. Darum gibt es ja Bibliotheken wie `numpy` wo die Rechnungen dann in Code ausgeführt werden der in C oder Fortran geschrieben ist. Wenn also etwas zu langsam ist, muss man in der Regel entweder selber Teile in C, C++, oder Fortran schreiben und dann in das Python-Programm einbinden, oder eine Sprache wie Cython verwenden, also Python das um Typannotationen erweitert ist und das in ein C-Modul übersetzt werden kann.
@consuli: Python mit numpy ist nur schnell, wenn die Hauptarbeit innerhalb von numpy passiert und nur wenige Schleifendurchgänge in reinem Python. Viele Probleme lassen sich so formulieren, dass diese Bedingung erfüllt ist. Aber dazu müßtest Du Deinen Algorithmus zeigen.
Danke BlackJack.
Nur mal Interesse halber. Kann man in eingebetttetem C, C++ und Fortran auf die Datentypen von Pandas und Numpy zurückgreifen, die imho für quantitative Datenanalyseaufgaben sehr hilfreich sind? Wo findet man dazu eine Dokumentation?
Consuli
Ja, das kann man in R auch. Leider habe ich keine entsprechenden C, C++ oder Fortran Kenntnisse.BlackJack hat geschrieben:Wenn also etwas zu langsam ist, muss man in der Regel entweder selber Teile in C, C++, oder Fortran schreiben und dann in das Python-Programm einbinden
Nur mal Interesse halber. Kann man in eingebetttetem C, C++ und Fortran auf die Datentypen von Pandas und Numpy zurückgreifen, die imho für quantitative Datenanalyseaufgaben sehr hilfreich sind? Wo findet man dazu eine Dokumentation?
Kann man in Cython die Bibliotheken Pandas, Scipy und Numpy einbinden? Wie kompliziert ist das? Kann man die Anaconda Distribution um Cython erweitern?BlackJack hat geschrieben: oder eine Sprache wie Cython verwenden, also Python das um Typannotationen erweitert ist und das in ein C-Modul übersetzt werden kann.
Consuli
Who controls the British crown? Who keeps the metric system down? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
Bisher habe ich den Algorithmus erst in R. Auch in R wird ein Grossteil der Arbeit von internenen vektorisierenden Funktionen gemacht, die in C, C++ oder Fortran geschrieben. Von daher weiss ich, wie rechenintensiv der Algorithmus ist. Von daher erlaube ich mir vorher über die Performance nachzudenken, bevor ich implementiere.Sirius3 hat geschrieben:@consuli: Python mit numpy ist nur schnell, wenn die Hauptarbeit innerhalb von numpy passiert und nur wenige Schleifendurchgänge in reinem Python. Viele Probleme lassen sich so formulieren, dass diese Bedingung erfüllt ist. Aber dazu müßtest Du Deinen Algorithmus zeigen.
Who controls the British crown? Who keeps the metric system down? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!